Как точно сделать Views из xml программно - PullRequest
0 голосов
/ 22 февраля 2012

Я пытаюсь создать эту ViewGroup программно, но у меня возникают проблемы с этим (потому что я еще не очень хорошо разбираюсь в этом) Может ли кто-нибудь указать, как это сделать программно?

<TextView
    android:text="Semester 1"
    android:textColor="#b3000d"
    android:gravity="center_vertical|center_horizontal"
    android:textSize="26dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:background="#ffb0b6"
    android:layout_marginBottom="5dip"
    android:typeface="sans"/>
<RelativeLayout
    android:id="@+id/relative"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#570000">
<TextView android:id="@+id/tv_1"
    android:textColor="#FFFFFF"
    android:gravity="center_vertical|left"
    android:textSize="16dip"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:typeface="serif"
    android:layout_width="90dip"
    android:paddingLeft="20dip"
    android:text="Grade">
</TextView>
<TextView android:id="@+id/tv_2"
    android:textColor="#FFFFFF"
    android:gravity="center_vertical|left"
    android:textSize="16dip"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:typeface="serif"
    android:layout_width="200dip"
    android:layout_toRightOf="@+id/tv_1"
    android:text="Courses">
</TextView>

</RelativeLayout>
<ListView
    android:id="@+id/lv_country"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:cacheColorHint="#00000000">
</ListView>

1 Ответ

1 голос
/ 22 февраля 2012

код ниже строит серию текстовых представлений и счетчиков в макете программно.

private void addQuestionToLayout(final Question question, ViewGroup viewGroup) {
    LinearLayout linearLayout = new LinearLayout(this);
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    TextView textView = new TextView(this);
    textView.setText(question.name);
    linearLayout.addView(textView);
    Spinner spinner = new Spinner(this);
    linearLayout.addView(spinner);
    questionToSpinner.put(question, spinner);
    SpinnerAdapter adapter = new SpinnerAdapter(this, android.R.layout.simple_spinner_item, question);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
    spinner.setAdapter(adapter);
    spinner.setSelection(question.defaultAnswer); // problems???
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            SpinnerAdapter spinnerAdapter = (SpinnerAdapter) parent.getAdapter();
            showToast(spinnerAdapter.question.name + " position=" + position + " id=" + id);
            score.setText(model.formatScoreString(score()));
        }
        public void onNothingSelected(AdapterView<?> parent) {
            SpinnerAdapter spinnerAdapter = (SpinnerAdapter) parent.getAdapter();
            showToast(spinnerAdapter.question.name + " unselected");
        }
    });
    viewGroup.addView(linearLayout);
}
private void addQuestionsToLayout(Model model, ViewGroup viewGroup) {
    for (Question question : model.questions)
        addQuestionToLayout(question, viewGroup);
}
...