Saya memiliki textView di xml di sini.
<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"/>
Seperti yang Anda lihat, saya mengatur DrawableLeft di xml.
Saya ingin mengubah kode drawable.
Apakah ada cara lain untuk melakukan ini? Atau mengatur drawableLeft dalam kode untuk tampilan teks?
android
textview
android-drawable
coder_For_Life22
sumber
sumber
textview.getCompoundDrawablesRelative()[0]
denganmContext.getResources().getDrawable(R.drawable.my_drawable)
Dari sini saya melihat metode setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) dapat digunakan untuk melakukan ini.
sumber
Anda dapat menggunakan salah satu metode berikut untuk mengatur Drawable on TextView:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
Dan untuk mendapatkan drawable dari sumber yang bisa Anda gunakan:
sumber
Menggunakan Kotlin:
Anda dapat membuat fungsi ekstensi atau hanya menggunakan
setCompoundDrawablesWithIntrinsicBounds
secara langsung.Jika Anda perlu mengubah ukuran drawable, Anda dapat menggunakan fungsi ekstensi ini.
Agar benar-benar mewah, buat pembungkus yang memungkinkan modifikasi ukuran dan / atau warna.
sumber
Ekstensi Kotlin + beberapa lapisan di sekitar drawable
sumber
ada dua cara untuk melakukannya, Anda dapat menggunakan XML atau Java untuk itu. Jika statis dan tidak memerlukan perubahan maka Anda dapat menginisialisasi dalam XML.
Sekarang jika Anda perlu mengubah ikon secara dinamis maka Anda dapat melakukannya dengan memanggil ikon berdasarkan peristiwa
sumber
sumber