Androidアプリでフォームを作成しています。
フォームには、2つのコンポーネントがRadioGroupsであるいくつかのフィールドがあります。ボタンを含む最初のグループは、アクティビティのレイアウトファイルで完全に定義されています。2番目のグループの場合、RadioGroup要素のみがレイアウトファイルで定義され、実行時にRadioButtonがグループに追加されます。
下の画像でわかるように、スタイリングの問題が発生しました。2番目のグループのラジオボタンは、最初のグループのボタンとは異なって見えます。2番目のグループのボタンの画像とテキストの色は異なります。ボタンの向きのほかに、両方のRadioGroupsは同じ属性で構成されています。2番目のグループのボタンをレイアウトファイルに直接追加すると、最初のグループと同じように見えます。
レイアウトファイル。
<RadioGroup
android:id="@+id/radio_gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/checkout_gender_male" />
<RadioButton
android:id="@+id/radio_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/checkout_gender_female" />
</RadioGroup>
...
<RadioGroup
android:id="@+id/radio_payment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="4dp" >
</RadioGroup>
ラジオボタンを追加するコード。
RadioGroup paymentGroup = (RadioGroup) findViewById(R.id.radio_payment);
RadioGroup.LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
for (String paymentType: checkoutData.getPaymentTypes()) {
RadioButton radioButton = new RadioButton(getBaseContext());
radioButton.setText(paymentType);
paymentGroup.addView(radioButton, params);
}
グループ2のボタンの同じルックアンドフィールをコードでアーカイブするにはどうすればよいですか?
更新1
さらにテストを行いました。
次の構成でテストしました。
- エミュレーター-GoogleAndroid4.1.1:同じ動作
- エミュレーター-GoogleAndroid2.3.4:動作は同じですが、すべてのRadioButtonのグラフィックは同じですが、テキストの色は異なります。このバージョンのAndroidでは、ボタンのグラフィックは1つだけだと思います。
- デバイス-NexusOne-AndroidCyanogenmod 7(Android 2.3.7):Android2.3.4を搭載したエミュレーターと同じ動作
レイアウトファイルに1つのボタンを追加し、プログラムで2つのボタンを追加して、2番目のグループを混ぜ合わせても、結果は同じです。最初のボタン(レイアウトで定義)は予想どおりに見えます。他の両方のボタンは異なるボタングラフィックを使用し、異なるテキストの色を持っています。