Ran le nouvel outil Lint contre mon code. Il a fait beaucoup de bonnes suggestions, mais je ne peux pas comprendre celle-ci.
Cette étiquette et ses enfants peuvent être remplacés par un et un composé extractible
Problème: vérifie si le nœud actuel peut être remplacé par un TextView à l'aide des éléments composables.
Un LinearLayout qui contient un ImageView et un TextView peut être manipulé plus efficacement en tant que composé extractible
Et voici ma mise en page
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:layout_centerInParent="true">
<ImageView
Android:id="@+id/upImage"
Android:layout_width="20dp"
Android:layout_height="20dp"
Android:layout_gravity="center_vertical"
Android:scaleType="centerInside"
Android:src="@drawable/up_count_big">
</ImageView>
<TextView
Android:id="@+id/LikeCount"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginLeft="2dp"
Android:layout_marginBottom="1dp"
Android:textColor="@color/gray"
Android:textSize="16sp"
Android:layout_gravity="center_vertical">
</TextView>
</LinearLayout>
Quelqu'un peut-il donner un exemple concret sur la manière de rendre un composé extractible dans ce cas?
TextView
est livré avec 4 tirables composés, un pour chacun des côtés gauche, supérieur, droit et inférieur.
Dans votre cas, vous n'avez pas du tout besoin de LinearLayout
et ImageView
. Ajoutez simplement Android:drawableLeft="@drawable/up_count_big"
à votre TextView
.
Voir TextView # setCompoundDrawablesWithIntrinsicBounds pour plus d'informations.
si, pour une raison quelconque, vous devez ajouter via du code, vous pouvez utiliser ceci:
mTextView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);
où left, top, right bottom sont Drawables
Pour ajouter à cela - il semble important de définir la largeur et la hauteur du dessinable selon ce post:
(son code fonctionne)
Vous pouvez utiliser une implémentation générale composée, mais si vous avez besoin de définir une taille, utilisez cette bibliothèque:
https://github.com/a-tolstykh/textview-rich-drawable
Voici un petit exemple d'utilisation:
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some text"
app:compoundDrawableHeight="24dp"
app:compoundDrawableWidth="24dp" />