Mam tutaj tekst w formacie XML.
<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"/>
Jak widać, ustawiłem DrawableLeft w xml.
Chciałbym zmienić rysunek w kodzie.
Czy jest coś takiego? Lub ustawiając drawableLeft w kodzie dla widoku tekstowego?
android
textview
android-drawable
coder_For_Life22
źródło
źródło
textview.getCompoundDrawablesRelative()[0]
zmContext.getResources().getDrawable(R.drawable.my_drawable)
Od tutaj widzę metoda setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) może być używany do tego celu.
źródło
Możesz użyć dowolnej z następujących metod ustawiania Drawable w TextView:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
Aby uzyskać dostęp do zasobów, możesz użyć:
źródło
Korzystanie z Kotlin:
Możesz utworzyć funkcję rozszerzenia lub po prostu użyć
setCompoundDrawablesWithIntrinsicBounds
bezpośrednio.Jeśli chcesz zmienić rozmiar rysowalnej, możesz użyć tej funkcji rozszerzenia.
Aby być naprawdę fantazyjnym, utwórz opakowanie, które umożliwia modyfikację rozmiaru i / lub koloru.
źródło
Przedłużenie Kotlin + wyściółka wokół szuflady
źródło
można to zrobić na dwa sposoby: można do tego użyć XML lub Java. Jeśli jest statyczny i nie wymaga zmian, możesz zainicjować w XML.
Jeśli chcesz dynamicznie zmieniać ikony, możesz to zrobić, wywołując ikony na podstawie zdarzeń
źródło
źródło