Android将图像添加到按钮

时间:2012-09-19 09:34:32

标签: android image button

我想将图片添加到Button(无imagebutton,因为特定按钮可以包含文字或图片;加上图片按钮也有同样的问题),同时仍然保留原始图像android风格的按钮。因此,在XML中添加android:background并不会删除它,因为这会删除带有圆角的Android默认按钮等。(android.R.drawable.btn_default)

这有可能吗?

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

编辑:我无法在XML中声明图像的来源,因为我从Web服务获取图像,所以任何东西都可以放在按钮上,但必须以编程方式进行。

5 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:10)

enter image description here

     <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

答案 2 :(得分:8)

在“使用文本显示图像的按钮属性”下方设置,使用此属性图像显示在文本上方。

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

答案 3 :(得分:2)

用于设置图像:

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");   
        }
    });
}

答案 4 :(得分:0)

您可以使用多个状态创建自己的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可以像这样有圆角。

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