xml中的textView:
android:id="@+id/bookTitle" android:layout_ android:layout_ android:layout_weight="1" android:drawableLeft="@drawable/checkmark" android:gravity="center_vertical" android:text android:textSize="24dip" android:maxLines="1" android:ellipsize="end"/>
如程序中所见我在xml中设置了 DrawableLeft。我想在代码中改变drawable。有什么方法可以使用代码为textview设置drawableLeft呢?
很容易想到使用
public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom);
或者 public void setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom)
public void setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom)
它们两个的区别是:
使用第一个方法:
类似调用方法如下:
1.在XML中使用android:drawableLeft="@drawable/icon"2.代码中动态变化Drawable drawable= getResources().getDrawable(R.drawable.drawable);/// 这一步必须要做,否则不会显示.drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());myTextview.setCompoundDrawables(drawable,null,null,null);
注意必须调用setBounds,才能腾出空间来显示drawableLeft的图片
以上代码等效于:
myTextview.setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom)
myTextview.setCompoundDrawablesWithIntrinsicBounds (Drawable left,
myTextview.