2

画面の幅いっぱいに並べて 2 つのカスタム RadioButtons があります。ボタンの中央に、テキストとテキストの右側に画像を配置したい。

drawableRight は、テキストの近くではなく、ボタンの右側にイメージを描画します。Android 4.0 を持っていないため、drawableEnd を使用できません。

Spannable を使用してみましたが、問題は画像がテキストよりも大きいことです。テキストの下部またはベースラインに合わせたくありません。ボタン自体の中央に配置したい。

私が見つけた最良の解決策は、TextView と ImageView を中央に配置して、クリック可能な RelativeLayout を作成することです。これにより、ボタンが希望どおりに表示されますが、それを実行し、各 RelativeLayout を RadioGroup の RadioButton のように動作するようにプログラムするのは大変な作業のようです。

もっと簡単な方法、または私が見逃しているものはありますか? または、RelativeLayout のアイデアを保持する必要がありますか? これが私のxmlです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <RelativeLayout
        android:id="@+id/first_relativelayout"
        android:clickable="true"
        android:background="@drawable/radio_button"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">
        <TextView
            android:id="@+id/first_textview"
            android:text="@string/first_radiobutton_label"
            android:textAppearance="?android:attr/textAppearanceButton"
            android:textColor="@android:color/white"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"></TextView>
        <ImageView
            android:contentDescription="@string/image_description"
            android:id="@+id/first_imageview"
            android:layout_centerVertical="true"
            android:src="@drawable/it"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/first_textview">
        </ImageView>
    </RelativeLayout>

     <RelativeLayout
        android:id="@+id/second_relativelayout"
        android:clickable="true"
        android:background="@drawable/radio_button"
        android:layout_weight="1"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">
        <TextView
            android:id="@+id/second_textview"
            android:text="@string/second_radiobutton_label"
            android:textAppearance="?android:attr/textAppearanceButton"
            android:textColor="@android:color/white"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"></TextView>
        <ImageView
            android:contentDescription="@string/image_description"
            android:id="@+id/second_imageview"
            android:layout_centerVertical="true"
            android:src="@drawable/it"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/second_textview">
        </ImageView>
</RelativeLayout>
</LinearLayout>
4

1 に答える 1

0

私は RelativeLayout ソリューションを使い続けました。それだけの価値があると思われるよりも多くの作業が必要ですが、完全に機能します。

于 2012-08-15T14:38:48.423 に答える