如何以编程方式更改按钮的图标?

ZiG*_*iGi 19 layout icons android text button

我已经有了按钮:

<Button 
android:layout_height="wrap_content" 
android:layout_width="fill_parent"
android:drawableLeft="@drawable/empty"
android:id="@+id/buttonMyText" 
android:text="  myText" 
android:textSize="20px" 
android:gravity="left">
</Button>
Run Code Online (Sandbox Code Playgroud)

程序启动时,我在按钮上显示"空"图标.

我想要做的是根据用户输入从我的代码(低,中和高)自动更改按钮的图标

我试过了:

Button myButton = bla... bla... bla...
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚

myButton.(what?)
Run Code Online (Sandbox Code Playgroud)

Ebo*_*ike 42

如果您检查文档,您将看到每个XML属性的等效代码.

请看这里:http://developer.android.com/reference/android/widget/Button.html

正在搜索drawableLeft节目:

android:drawableLeft:
setCompoundDrawablesWithIntrinsicBounds(Drawable,Drawable,Drawable,Drawable)
Run Code Online (Sandbox Code Playgroud)

  • 解决了!我使用了myButton.setCompoundDrawablesWithIntrinsicBounds(drawable.low,0,0,0); 谢谢堆伴侣!你是一个救生员 (7认同)
  • @hooraygradschool:你正在使用`int`s作为资源ID的版本(而不是现成的Drawables).在这种情况下,你需要传入'0`来表示你不想要一个drawable. (7认同)
  • 另外,按顺序,参数是:`left`,`top`,`right`和`bottom` Drawables,所以你可以传递多个Drawables来绘制drawableLefts和drawableRights,tops,bottom等等.或者只是传入对于你没有使用的`null`. (5认同)
  • 即使查看文档,它也不会完全跳到你身上......或者至少在我身上;) (2认同)

Rav*_*ana 8

如果你想在按钮点击事件中更改图标,请尝试此代码...

buttonMyText.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
       buttonMyText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ImageNameHere, 0, 0, 0);
       buttonMyText.setTextColor(Color.BLACK);
    }
});
Run Code Online (Sandbox Code Playgroud)