如何以编程方式从xml中精确制作视图

时间:2012-02-22 01:05:05

标签: java android xml view viewgroup

我正在尝试以编程方式创建这个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 个答案:

答案 0 :(得分:1)

下面的代码以编程方式在布局中构建一系列文本视图和微调器。

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);
}