2012-02-22 14 views
0

私はこのViewGroupをプログラム的に作成しようとしていますが、これを行うのに問題があります(これはあまりうまくいきません)。xmlからプログラムで正確にビューを作成する方法

<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> 
+0

ルート(レイアウト)要素がありません。目的に応じてその部分を省略しましたか?これは無効なXMLです。 –

+0

はい。私はそれを意図的に放置した。実際に迷惑な場合、ルートはheightとwidthの両方に対してfill_parentを持つLinearLayoutに過ぎません。 –

答えて

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); 
} 
関連する問題