Android图标和文本的button

我在我的应用程序中有这样的button:

<Button android:id="@+id/bSearch" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="16dp" android:text="Search" android:textSize="24sp" /> 

我正在尝试创build一个与文本和图标相同的button。 android:drawableLeft不适用于我(也许会,但我不知道如何设置一个最大高度的图标)。

所以我创build了一个带有ImageView和TextView的LinearLayout,并使它像一个button:

  <LinearLayout android:id="@+id/bSearch2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/btn_default" android:clickable="true" android:padding="16dp" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:adjustViewBounds="true" android:maxHeight="30dp" android:maxWidth="30dp" android:scaleType="fitCenter" android:src="@drawable/search_icon" /> <TextView android:id="@+id/tvSearchCaption" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textSize="24sp" android:paddingRight="30dp" android:gravity="center" android:text="Search" /> </LinearLayout> 

我的新button正是我想要的(字体大小,图标和文本放置)。 但它看起来不像我的默认button:

在这里输入图像说明

所以我试着改变我的新Button的背景和文字颜色:

 Button Search = (Button) findViewById(R.id.bSearch); LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2); bSearch2.setBackground(bSearch.getBackground()); TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption); tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor()); 

这给了一个奇怪的结果,我的旧button,搞砸了:

在这里输入图像说明

当我改变这两个button在XML中的顺序,所以“新button”先走,这使得另一个奇怪的结果:

在这里输入图像说明

现在我注意到,当我尝试按旧button,新的button被按下。

有任何想法吗?

试试这个。

 <Button android:id="@+id/bSearch" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="16dp" android:text="Search" android:drawableLeft="@android:drawable/ic_menu_search" android:textSize="24sp"/> 

要将图像添加到左侧,右侧,顶部或底部,您可以使用如下属性:

 android:drawableLeft android:drawableRight android:drawableTop android:drawableBottom 

示例代码如上所示。 您也可以使用相对布局来实现这一点。

对于任何想要dynamic执行此操作的人来说,button对象上的setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)将会setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)帮助。

样品

 Button search = (Button) findViewById(R.id.yoursearchbutton); search.setCompoundDrawables('your_drawable',null,null,null); 

@Liem Vo是正确的,但如果你使用结束/开始而不是右/左android工作室将欣赏它:)

 <Button android:id="@+id/bSearch" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="16dp" android:text="Search" android:drawableStart="@android:drawable/ic_menu_search" android:textSize="24sp"/>