如何在RadioButton中居中图像和文字?

时间:2012-08-03 17:12:42

标签: android radio-button relativelayout centering radio-group

我有两个并排的自定义RadioButtons,可以填充屏幕的宽度。我希望文本和图像位于文本的右侧,以按钮为中心。

drawableRight将图像绘制在按钮右侧,而不是靠近文本。我无法使用drawableEnd,因为我没有Android 4.0

我尝试过使用Spannable,但问题是图像比文字大。我不希望它与文本的底部或基线对齐;我希望它自己在按钮中居中。

我发现的最佳解决方案是制作一个可点击的RelativeLayout,其中包含TextView和ImageView。这使按钮看起来像我想要的那样,但是看起来要做很多工作,并将每个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>

1 个答案:

答案 0 :(得分:0)

我继续使用RelativeLayout解决方案。它需要更多的工作而不是看起来值得,但它完美无缺。