ラジオボタンの位置を左から右に変更できますか?緑色の選択されたボタンが右側にあり、テキストが左側にあることを意味します。出来ますか?(デフォルトでは、ボタンは左、テキストは右)
2 に答える
RadioButton は、あなた (またはほとんどの人) が望むほど柔軟ではありません。独自のカスタム ウィジェットを作成できますが、慣れていない場合は困難な場合があります。または、私のお気に入りの回避策を実行できます。
RadioButton を通常のボタンのように処理します。RadioGroup 機能は使用しないでください。ここで、チェックを手動で制御する必要があります。RadioGroup をなくすことで、好きなように自由にレイアウトを作成できます。
各ボタンの左側にテキスト、右側に画像を持つ TableLayout で RadioButtons を使用するサンプル xml レイアウトを次に示します。
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TableRow
android:id="@+id/row_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button 1" />
<RadioButton
android:id="@+id/rb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pretty_pic_1" />
</TableRow>
<TableRow
android:id="@+id/row_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button 2" />
<RadioButton
android:id="@+id/rb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pretty_pic_3" />
</TableRow>
<TableRow
android:id="@+id/row_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button 3" />
<RadioButton
android:id="@+id/rb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pretty_pic_3" />
</TableRow>
</TableLayout>
しかし、あなたはまだ終わっていません。ラジオ ボタンを手動で処理する必要があります。これが私がやりたい方法です:
class FooActivity extends Activity {
RadioButton m_rb1, m_rb2;
TableRow m_row1, m_row2;
@Override
protected void onCreate(Bundle savedInstanceState) {
m_rb1 = (RadioButton) findViewById(R.id.rb1);
m_rb2 = (RadioButton) findViewById(R.id.rb2);
m_row1 = (TableRow) findViewById(R.id.row_1);
m_row1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
m_rb1.setChecked(true);
m_rb2.setChecked(false);
}
});
m_row2 = (TableRow) findViewById(R.id.row_2);
m_row2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
m_rb1.setChecked(false);
m_rb2.setChecked(true);
}
});
}
}
テキスト、画像、またはボタン自体を選択して、ユーザーに RadioButton を選択してもらいたいことに注意してください。そこで、TableRows 全体をクリック可能なオブジェクトにしました。
お役に立てれば!
getCompoundDrawables() および setCompoundDrawables() を使用して、テキストの周りにドローアブルを再配置できるはずです。
さらに一歩進んで、おそらく、super.onDraw() を呼び出した後に onDraw() メソッドでそれを行った CheckBox に基づいて、独自の CheckBoxRight ウィジェットを実装することができます。
最後の代替手段は、TextView から直接独自のウィジェットを作成し、onClick() イベント ハンドラーから内部状態を維持した後、適切に setCompoundDrawables() を作成することです。