RadioButtons
内のRadioGroup
の間に仕切りを追加する簡単な方法はありますか? divider
xml属性を使用しようとしましたが、機能していないようです。関連する場合、私のレイアウトのRadioGroup
には子ビューが含まれていません。プログラムでRadioButtons
を追加しています。
[〜#〜] edit [〜#〜]:問題は解決しました。 xmlのRadioButton
内にRadioGroup
以外のビューを追加できます。私の場合、プログラムで行うこともできますが、レイアウトパラメータには注意してください。 Akkiは正しい考えを持っていました、そしてこれは私のために働きました:
for (int i = 0; i < items.size(); i++) {
if (i > 0) {
// add a divider with height of 1 pixel
View v = new View(this);
v.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.MATCH_PARENT, 1));
v.setBackgroundColor(Android.R.color.darker_gray);
mRadioGroup.addView(v);
}
RadioButton rb = new RadioButton(this);
/* set other properties ... */
mRadioGroup.addView(rb);
}
<RadioGroup
Android:id="@+id/location_radio_group"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:divider="?android:attr/dividerHorizontal"
Android:showDividers="middle">
</RadioGroup>
それはあなたのために働くでしょう。そして、グループビューにビューを追加する方法に本当に興味がありますか?それはclasscastexceptionを引き起こすはずです、違いますか?
回避策は次のとおりです。
まず、仕切りとしてShape Drawableを作成します。次に例を示します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<solid
Android:color="@color/white" />
<stroke
Android:width="0.3dp"
Android:color="@color/black" />
</shape>
これは単純な黒い境界線です。それをdrawable /フォルダー内に置き、custom_divider.xmlのような名前を付けます。
次に、RadioGroupを使用するレイアウトに移動します。それぞれのRadioButton(s)の背景としてShapeDrawableを使用します。次に例を示します。
<RadioGroup
Android:id="@+id/radioGroup1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp"
Android:divider="@color/black" >
<RadioButton
Android:id="@+id/radio0"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/custom_radiogroup_divider"
Android:checked="true"
Android:text="RadioButton" />
<RadioButton
Android:id="@+id/radio1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/custom_radiogroup_divider"
Android:text="RadioButton" />
<RadioButton
Android:id="@+id/radio2"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/custom_radiogroup_divider"
Android:text="RadioButton" />
</RadioGroup>
RadioGroupにShapeDrawableを追加することもできます。それはあなた次第です、あなたが必要ならそれをカスタマイズしてください。 :)
これは、カスタム境界線(コーナー半径)とカスタム仕切りShapeDrawableを使用したRadioGroupの例です。
仕切りを表すシェイプドローアブルを作成します(「radio_group_divider」と呼ばれます)。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<size Android:width="12dp" />
<solid Android:color="@color/transparent" />
</shape>
このドローアブルをRadioGroupの「ディバイダー」として使用します。
<RadioGroup
...
Android:divider="@drawable/radio_group_divider"
Android:showDividers="middle"
...>
</RadioGroup>
プログラムでRadioGroupを作成する場合は、プログラムで分周器も設定する必要があります。あなたはそのようにそれを行うことができます:
RadioGroup radioGroup = new RadioGroup(getActivity()); //We create a new radio group
radioGroup.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
radioGroup.setDividerDrawable(getResources().getDrawable(Android.R.drawable.divider_horizontal_textfield, getActivity().getTheme()));
.。
注:このコード部分はフラグメントで機能しています。したがって、それをアクティビティに入れたい場合は、「getActivity()」を「YourActivityName.this」に変更して変更する必要があります。