2012-08-03 155 views
2

我有两个自定义的RadioButton并排填充屏幕的宽度。我想在文本右侧有一个文本和一个图像,并位于按钮的中心。如何在RadioButton中居中放置图像和文本?

drawableRight绘制按钮右侧的图像方式,而不是靠近文本。我无法使用drawableEnd,因为我没有安卓4.0

我试过使用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> 
+0

我认为如果你发布你的xml,将会更容易描述你在做什么。 – 0gravity 2012-08-03 17:27:21

+0

@ 0gravity请参阅编辑 – Kalina 2012-08-03 17:34:50

+0

好吧,让我看看我是否明白:您的radio_button图像已经有一个文本,并且您希望将textview和图像视图放在radio_button图像的右侧? – 0gravity 2012-08-03 17:48:33

回答

0

我一直在用RelativeLayout解决方案。它需要更多的工作,似乎应该是值得的,但它的工作完美。

相关问题