Je crée dynamiquement des boutons. Je les ai d'abord stylisés en utilisant XML, et j'essaie de prendre le XML ci-dessous et de le rendre programmatique.
<Button
android:id="@+id/buttonIdDoesntMatter"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="buttonName"
android:drawableLeft="@drawable/imageWillChange"
android:onClick="listener"
android:layout_width="fill_parent">
</Button>
C'est ce que j'ai jusqu'à présent. Je peux tout faire sauf le tirable.
linear = (LinearLayout) findViewById(R.id.LinearView);
Button button = new Button(this);
button.setText("Button");
button.setOnClickListener(listener);
button.setLayoutParams(
new LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT
)
);
linear.addView(button);
drawableLeft
. J'ai essayé vos suggestions ici pour définir une "icône interdite" lorsque vous cliquez dans un dossier sans autorisations de lecture, et cela fonctionne. Toutefois, lorsque vous changez de dossier et que l'adaptateur est rechargé, l'icône interdite persiste (c'est-à-dire qu'elle n'estdrawableLeft
pas redessinée). Savez-vous comment postulernotifyDataSetChanged
aussi pour ledrawableLeft
, sans faire de boucle? Merci!Listview
élément lorsque les données changent - ce qui n'a pas vraiment de rapport avec cette question ou réponse. Je vous suggère de poster une question au lieu d'un commentaire.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.money, 0 )
ne fonctionne pas, si je définis le drawableRight dans le layout.xml. Si je mets l'icône d'origine à l'intérieuronCreate()
, le changement fonctionne. Pourrait-il être lié à l'API 19?Vous pouvez aussi l'essayer aussi
la source
•
Kotlin Version
Utilisez l'extrait ci-dessous pour ajouter une gauche dessinable au bouton:
.
•
Important Point in Using Android Vector Drawable
Lorsque vous utilisez un vecteur Android dessinable et que vous souhaitez avoir une compatibilité descendante pour l' API inférieure à 21 , ajoutez les codes suivants à:
Au niveau de l'application
build.gradle
:Dans la classe Application:
la source
Context#.getDrawable(resId)
déconseillé, son utilisation peut donc entraîner des problèmes.Pour moi, cela a fonctionné:
la source
la source
J'ai fait ça:
la source
Si vous utilisez drawableStart , drawableEnd , drawableTop ou drawableBottom ; vous devez utiliser " setCompoundDrawablesRelativeWithIntrinsicBounds "
la source
A travaillé pour moi. Pour régler le dessin à droite
la source
comme le souligne @ Jérémy Reynaud, comme décrit dans cette réponse , le moyen le plus sûr de définir le dessin à gauche sans modifier les valeurs des autres dessinables (en haut, à droite et en bas) consiste à utiliser les valeurs précédentes du bouton avec setCompoundDrawablesWithIntrinsicBounds :
Ainsi, tous vos tirables précédents seront conservés.
la source
Voici la façon de changer la couleur de l'icône de gauche dans le texte d'édition et de la définir dans le côté gauche.
la source
Pourrait être utile:
la source
Ajouter une extension Kotlin
Si vous comptez le faire fréquemment, l'ajout d'une extension rend votre code plus lisible. Le bouton étend TextView; utilisez Button si vous voulez être plus étroit.
Pour utiliser l'extension, appelez simplement
Chaque fois que vous devez effacer, ne passez pas un paramètre ou ne créez pas une autre extension appelée
removeDrawables
la source
Essaye ça:
la source
Essaye ça:
la source