13

我想向 a 添加图像Button(不imagebutton,因为特定按钮可以包含文本或图像;加上 imagebutton 有同样的问题),同时仍保留原始的 android 样式按钮。因此,添加android:backgroundXML 并不会削减它,因为这将删除带有圆角等的 android 默认按钮。(android.R.drawable.btn_default)

这有可能吗?

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

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

4

5 回答 5

27

这可以使用layout.xml 中的android:drawableTop,android:drawableBottom​​ , android:drawableLeft,属性来完成。android:drawableRight

于 2012-09-19T09:38:22.603 回答
10

在此处输入图像描述

     <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" />
于 2015-09-10T06:45:21.613 回答
8

设置下面的按钮属性以显示带有文本的图像,使用此属性图像显示在文本上方。

<Button android:drawableTop="@drawable/ic_launcher"/>
于 2012-09-19T09:42:51.123 回答
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");   
        }
    });
}
于 2012-09-19T09:44:51.640 回答
0

您可以创建自己的具有多种状态的可绘制对象并将其设置为背景

<?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"/>
于 2012-09-19T09:36:45.013 回答