ここにxmlのtextViewがあります。
<TextView
Android:id="@+id/bookTitle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:drawableLeft="@drawable/checkmark"
Android:gravity="center_vertical"
Android:textStyle="bold"
Android:textSize="24dip"
Android:maxLines="1"
Android:ellipsize="end"/>
ご覧のとおり、DrawableLeftをxmlに設定しています。
コード内のdrawableを変更したいのですが。
これをやるためにとにかく行くためにとにかくありますか?それともテキストビューのコードでdrawableLeftを設定しますか。
setCompoundDrawablesWithIntrinsicBounds(int left、int top、int right、int bottom)を使用することができます
画像が欲しくない場合は0を設定
左側のDrawableの例:
TextView textView = (TextView) findViewById(R.id.myTxtView);
textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0);
ヒント:XML属性を知っているが実行時にそれを使用する方法についての手がかりがない場合はいつでも。開発者向けドキュメントのそのプロパティの説明に進んでください。実行時にサポートされている場合は、関連メソッドがあります。すなわち、 DrawableLeft の場合
ここ から setCompoundDrawablesWithIntrinsicBounds(int、int、int、int) というメソッドを見ることができます。
TextViewにDrawableを設定するには、次のいずれかの方法を使用できます。
1- setCompoundDrawablesWithIntrinsicBounds(int、int、int、int)
2- setCompoundDrawables(Left_Drawable、Top_Drawable、Right_Drawable、Bottom_Drawable)
そして、リソースから描画可能にするためにあなたは使うことができます:
getResources().getDrawable(R.drawable.your_drawable_id);
Kotlin拡張機能+ドロアブルの周囲のパディング
fun TextView.addDrawable(drawable: Int) {
val imgDrawable = ContextCompat.getDrawable(context, drawable)
compoundDrawablePadding = 32
setCompoundDrawablesWithIntrinsicBounds(imgDrawable, null, null, null)
}