2

ラジオボタンの位置を左から右に変更できますか?緑色の選択されたボタンが右側にあり、テキストが左側にあることを意味します。出来ますか?(デフォルトでは、ボタンは左、テキストは右)

4

2 に答える 2

0

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 全体をクリック可能なオブジェクトにしました。

お役に立てれば!

于 2012-11-08T23:21:07.347 に答える
0

getCompoundDrawables() および setCompoundDrawables() を使用して、テキストの周りにドローアブルを再配置できるはずです。

さらに一歩進んで、おそらく、super.onDraw() を呼び出した後に onDraw() メソッドでそれを行った CheckBox に基づいて、独自の CheckBoxRight ウィジェットを実装することができます。

最後の代替手段は、TextView から直接独自のウィジェットを作成し、onClick() イベント ハンドラーから内部状態を維持した後、適切に setCompoundDrawables() を作成することです。

于 2012-10-21T09:59:43.067 に答える