10

我正在使用按钮

<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??

4

5 回答 5

41

试试这个:

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

参考

于 2013-08-16T16:43:21.020 回答
12

在不更改其他可绘制对象(顶部、右侧和底部)的值的情况下设置左侧可绘制对象的最安全方法:

Drawable[] drawables = textViewExample.getCompoundDrawables();
textViewExample.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, drawables[1], drawables[2], drawables[3]);
于 2013-08-16T17:42:22.313 回答
2

为此,您可以使用

setCompoundDrawables(...);

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

这是如何使用它:

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

摘自:如何以编程方式在 Android 按钮上设置 drawableLeft?

于 2013-08-16T16:35:44.377 回答
0

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

于 2013-08-16T16:35:17.363 回答
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);
        }
    }
});
于 2014-11-28T05:45:40.420 回答