以编程方式更改Button的drawableLeft

时间:2013-08-16 16:27:42

标签: android image button textview drawable

我正在使用按钮

<Button
        android:id="@+id/zoom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/trans"
        android:drawableLeft="@drawable/left_img"
        android:fontFamily="arial"
        android:text="My Name is "
        android:textSize="50sp" />

并更改其文字颜色:

zoom.setTextColor(Color.parseColor("voilet"));

但无法理解 how to change its image??

5 个答案:

答案 0 :(得分:39)

试试这个:

int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);

Reference

答案 1 :(得分:12)

设置左侧drawable而不更改其他drawables(顶部,右侧和底部)的值的最安全方法:

Drawable[] drawables = textViewExample.getCompoundDrawables();
textViewExample.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, drawables[1], drawables[2], drawables[3]);

答案 2 :(得分:2)

为此,您可以使用

setCompoundDrawables(...);

方法。请注意, TextView 附带,而不是按钮。

这是如何使用它:

Drawable img = getContext().getResources().getDrawable( R.drawable.yourimage);
img.setBounds( 0, 0, 60, 60 );  // set the image size
txtVw.setCompoundDrawables( img, null, null, null );

取自:How to programmatically set drawableLeft on Android button?

答案 3 :(得分:0)

我建议您使用Imageview而不是使用按钮,并为其添加onclick侦听器。这样你就可以Imageview.setbitmap(bitmap)并从你的一个drawables

创建一个位图

答案 4 :(得分:0)

按照此代码,我希望它对您有用..

boolean isIconChange;
button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        isIconChange = !isIconChange;
        if(isIconChange){
           button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.like, 0, 0, 0);
           button.setTextColor(Color.BLACK);
        } else {
           button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.dislike, 0, 0, 0);
           button.setTextColor(Color.RED);
        }
    }
});