我正在使用按钮
<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??
答案 0 :(得分:39)
试试这个:
int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);
答案 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);
}
}
});