Android将图像添加到button

我想添加一个图像到一个Button (没有图像Button ,因为特定的button可以包含文本或图像;加上图像button有同样的问题),而仍然保留原来的Android风格的button。 因此,在XML中添加android:background不会削减它,因为这将删除带有圆angular的android默认button等(android.R.drawable.btn_default)

这是可能的吗?

我认为一种方法是为button(一个用于向上和一个向下)制作一个9patch图像, onTouch Action_DOWN使可分层的背景可绘制并将其放到button上,并且执行同样的事情,但是使用另一个9patch for onTouch Action_UP ,但我认为这会大大降低应用程序的性能,因为这需要相当多的资源阅读和图层合并来实现所有button点击(对于我的应用程序来说,这将是相当多的)。 我上面说的是正确的吗?

编辑:我不能在XML中声明图像的来源,因为我从Web服务获取图像,所以任何东西都可以放在button上,但它必须以编程方式发生。

这可以使用你的layout.xml中的android:drawableTopandroid:drawableBottomandroid:drawableLeftandroid:drawableRight属性来完成。

设置下面的显示图像与文本的属性,使用此属性图像显示在上面的文本。

 <Button android:drawableTop="@drawable/ic_launcher"/> 

在这里输入图像说明

  <Button android:layout_width="0dp" android:layout_weight="1" android:background="@drawable/home_button" android:drawableLeft="@android:drawable/ic_menu_edit" android:drawablePadding="6dp" android:gravity="left|center" android:height="60dp" android:padding="6dp" android:text="AndroidDhina" android:textColor="#000" android:textStyle="bold" /> 

更多信息http://androiddhina.blogspot.in/2015/09/how-to-add-image-inside-button.html

设置图像:

 btn.setBackgroundResource(R.drawable.ic_launcher); 

设置文字:

 btn.setText("My Button"); 

代码:

 private Drawable buttonDrawable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button btn=(Button) findViewById(R.id.button1); buttonDrawable=btn.getBackground(); //Setting the image. btn.setBackgroundResource(R.drawable.ic_launcher); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*Removing image and setting text*/ btn.setBackgroundDrawable(buttonDrawable); btn.setText("My Button"); } }); } 

你可以用多个状态创build你自己的drawable,并将其设置为背景

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/selected" /> <item android:drawable="@drawable/normal" /> </selector> 

Drawables可以有像这样的圆angular。

 <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" android:bottomLeftRadius="0.2dp" android:bottomRightRadius="0.2dp"/>