Eu tenho um textView em xml aqui.
<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"/>
Como você pode ver, defino o DrawableLeft em xml.
Eu gostaria de mudar o drawable no código.
Existe alguma maneira de fazer isso? Ou definindo o drawableLeft no código para a exibição de texto?
android
textview
android-drawable
coder_For_Life22
fonte
fonte
textview.getCompoundDrawablesRelative()[0]
commContext.getResources().getDrawable(R.drawable.my_drawable)
A partir daqui , vejo o método setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) que pode ser usado para fazer isso.
fonte
Você pode usar qualquer um dos seguintes métodos para definir o Drawable no TextView:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Esquerda, Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
E para obter recursos dos recursos, você pode usar:
fonte
Usando o Kotlin:
Você pode criar uma função de extensão ou apenas usar
setCompoundDrawablesWithIntrinsicBounds
diretamente.Se você precisar redimensionar o drawable, poderá usar esta função de extensão.
Para ficar realmente elegante, crie um invólucro que permita modificações de tamanho e / ou cor.
fonte
Uma extensão Kotlin + algum preenchimento ao redor do drawable
fonte
existem duas maneiras de fazer isso: você pode usar XML ou Java para isso. Se for estático e não exigir alterações, você poderá inicializar em XML.
Agora, se você precisar alterar os ícones dinamicamente, poderá fazê-lo chamando os ícones com base nos eventos
fonte
fonte