【问题标题】:Android: set drawable over buttonAndroid:设置可绘制按钮
【发布时间】:2014-06-12 20:55:32
【问题描述】:

在我的应用中是 3 Buttons(屏幕截图在底部)。现在我想在第一个Button(底部的图像)上设置一个AnimatedDrawable(一根手指)。我使用的是LinearLayout,按钮的背景只是一种颜色(不可绘制)。 我试过这个:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/black"/>
        </shape>
    </item>
    <item android:drawable="@drawable/finger"></item>
</layer-list>

并将layer-list 设置为Button 的背景,但手指与Button 一样大。我还尝试在我的LinearLayout 中使用RelativeLayout,但后来我无法设置Buttonsweight。由于Button 上的文本,我无法使用ImageButton。那么有没有可能解决这个问题?

尼尔斯你好

【问题讨论】:

  • 您可以选择将手形图像设置为可绘制按钮并为可绘制动画制作动画
  • 使用可以使用android:drawableRight=""设置手形按钮
  • 谢谢,您能多解释一下或发布代码吗?我不明白你的指示。
  • 在yourlayout按钮中添加这一行(示例代码)android:drawableRight="@android:drawable/ic_menu_directions"

标签: android button layout adt


【解决方案1】:

试试这个代码:

<Button
    android:id="@+id/Submit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="23dp"
    android:drawableRight="@android:drawable/ic_menu_directions"
    android:text="Button" />

除了这个“@android:drawable/ic_menu_directions”,你可以从drawable中选择任何图像

【讨论】:

  • 我相信你的意思是“替代”而不是“即时”
  • 谢谢,我不得不修改它来设置重量,但效果很好
  • 我刚刚注意到的是,上面的文字比没有图像的要多。有没有可能解决这个问题。
  • @user3125728 提供填充并对齐
【解决方案2】:

您可以通过以下方式以编程方式在按钮上设置图像:

final Button btn = (Button) findViewById(R.id.your_Button);


btn.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        btn.setBackgroundResource(R.drawable.icon);
    }
});

你可以使用对你更好的“图像按钮”,代码如下:

final ImageButton next = (ImageButton) findViewById(R.id.your_Button) ;
Drawable d = Drawable.createFromPath("@drawable/your_image");
next.enter.setImageDrawable(d);

【讨论】:

  • 但问题是我无法在 ImageButton 上设置文本