web-dev-qa-db-ja.com

TextViewでプログラムで左描画可能に設定

ここに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を設定しますか。

246

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 の場合

689
BrainCrash

ここ から setCompoundDrawablesWithIntrinsicBounds(int、int、int、int) というメソッドを見ることができます。

14
Jack

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);
5
Shajeel Afzal

Kotlin拡張機能+ドロアブルの周囲のパディング

fun TextView.addDrawable(drawable: Int) {
val imgDrawable = ContextCompat.getDrawable(context, drawable)
compoundDrawablePadding = 32
setCompoundDrawablesWithIntrinsicBounds(imgDrawable, null, null, null)
}
0
r3dm4n