结合背景图像,button上的背景可绘制样式

我想知道是否有可能将一个button上的图像,并使用可绘制的来源,并有上面的文字?

我目前使用这个作为我的button样式在drawable / red_btn.xml中

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#ef4444" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#ef4444" android:endColor="#992f2f" android:angle="270" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

然后我的button

  <Button android:id="@+id/testButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Income" android:textSize="15dip" android:background="@drawable/red_btn" android:textColor="#fff" android:textStyle="bold" /> 

看起来像这样

在这里输入图像说明

现在我想在这个button的右边添加另一个.png图像(arrow.png)

在这里输入图像说明

这是可能的,如果,我该怎么办呢?

提前致谢。 __________________________________________________________________________________________________________________________________________

编辑

在遵循下面的Luksprog的build议之后,我现在在drawable中有“red_btn_normal.xml”

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#ef4444" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#ef4444" android:endColor="#992f2f" android:angle="270" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

red_btn_pressed.xml

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true"> <shape> <solid android:color="#ef4444" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <item> <bitmap android:gravity="right" android:src="@drawable/arrow" /> </item> </layer-list> 

然后我创build我的button就像这个“red_btn.xml”

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/red_btn_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/red_btn_normal"></item> </selector> 

最后我的button

  <Button android:id="@+id/testButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Income" android:textSize="15dip" android:background="@drawable/red_btn" android:textColor="#fff" android:textStyle="bold" /> 

问题是,当我点击button时,它只显示白色箭头, 没有按下时它显示。 代码有什么问题? =)

Solutions Collecting From Web of "结合背景图像,button上的背景可绘制样式"

我想知道是否有可能将一个button上的图像,并使用可绘制的来源,并有上面的文字?

是的,这是可能的。 您的select器将变成:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/red_btn_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/red_btn_normal"></item> </selector> 

其中两个drawable是两个layer-list drawable,第一个项目是来自您的初始select器的项目,第二个是包装为位图drawbale的.png图像。 例如,对于red_btn_pressed.xml您将拥有:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape> <solid android:color="#ef4444" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <item> <bitmap android:gravity="right" android:src="@drawable/arrow" /> </item> </layer-list> 

red_btn_normal.xml将是:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape> <gradient android:angle="270" android:endColor="#992f2f" android:startColor="#ef4444" /> <stroke android:width="1dp" android:color="#992f2f" /> <corners android:radius="3dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <item> <bitmap android:src="@drawable/allowed" android:gravity="right"/> </item> </layer-list> 

请记住, 只有Button的大小允许它(作为Button的背景的一部分)时,箭头图像才会在文本的右侧。 如果你试图在Button的文本和那个箭头图像之间施加某种定位关系,那么你需要扩展Button类并自己做。

我跟着简单去了

 <Button android:id="@+id/testButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="Income" android:textSize="15dip" android:background="@drawable/red_btn" android:drawableRight="@drawable/arrow" android:textColor="#fff" android:textStyle="bold" />