Lorsque j'exécute la mise en page sur un fichier XML spécifique, j'obtiens ceci:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Quelle modification doit être effectuée pour le code xml suivant:
<LinearLayout Android:id="@+id/name_layout"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="center_vertical"
Android:background="@drawable/grouplist_single_left_grey_area" >
<ImageView Android:id="@+id/photo_image"
Android:layout_width="@dimen/thumbnail_width"
Android:layout_height="@dimen/thumbnail_height"
Android:paddingBottom="5dip"
Android:paddingTop="5dip"
Android:paddingRight="5dip"
Android:paddingLeft="5dip"
Android:layout_marginRight="5dip"
Android:clickable="true"
Android:focusable="true"
Android:scaleType="fitCenter"
Android:src="@*Android:drawable/nopicture_thumbnail"
Android:background="@drawable/photo_highlight" />
<TextView Android:id="@+id/name"
Android:paddingLeft="5dip"
Android:layout_weight="1"
Android:layout_width="0dip"
Android:layout_height="wrap_content"
Android:gravity="center_vertical"
Android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Voici à quoi cela ressemble à l'écran:
L'icône de l'appareil photo est la valeur par défaut. En cliquant dessus, l'utilisateur aura la possibilité de choisir une autre image.
Pour développer la réponse de Romain Guy, voici un exemple.
Avant:
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp"
Android:padding="5dp" >
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="My Compound Button" />
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/my_drawable" />
</LinearLayout>
Après:
<TextView
Android:layout_marginTop="10dp"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="My Compound Button"
Android:drawableRight="@drawable/my_drawable" Android:padding="5dp" />
Fusionnez le TextView
et le ImageView
en un, en utilisant les méthodes setCompoundDrawable*()
de TextView, ou en utilisant Android:drawableLeft
.
Je pensais que j'essaierais d'obtenir des puntos supplémentaires pour cela aussi: vous pouvez ajouter un remplissage entre l'image et le texte en utilisant Android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741
Parfois, il est possible de remplacer ImageView
(ou plusieurs) et TextView
par un TextView
par un ou plusieurs dessin (s). Il n'y a PAS beaucoup de paramètres qui peuvent être appliqués au composé dessinable en utilisant l'API native et cela bibliothèque TextViewRichDrawable , mais si vous pouvez gérer un TextView au lieu d'utiliser LinearLayout, vous devriez certainement utilisez-le .
La liste des attributs et paramètres qui peuvent être appliqués aux drawables composés:
Taille: ( OUI, vraiment ):
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some text"
app:compoundDrawableHeight="24dp"
app:compoundDrawableWidth="24dp"/>
Même définissez la ressource vectorielle comme dessinable:
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some text"
app:drawableTopVector="@drawable/some_vector_drawble"
app:drawableEndVector="@drawable/another_vector_drawable" />
Rembourrage de Drawable utilisant l'API native Android:drawablePadding
-> lien
Voici un exemple:
Un LinearLayout
qui contient un ImageView
et un TextView
peut être traité plus efficacement comme un dessin composé (un seul TextView
, en utilisant le drawableTop
, drawableLeft
, drawableRight
et/ou drawableBottom
attributs pour dessiner une ou plusieurs images adjacentes au texte).
Si les deux widgets sont décalés l'un de l'autre avec des marges, cela peut être remplacé par un attribut drawablePadding
.
Il existe un correctif rapide pour effectuer cette conversion dans le plugin Eclipse.
De: Android Documents officiels de l'API!
Lorsque j'ai suivi le code ci-dessus, le texte à l'intérieur de TextView ne se définit pas correctement. Vous devez régler sa gravité sur center | start pour obtenir ce qui est indiqué dans la question posée.
La vue textuelle ressemble à ceci:
<TextView
Android:id="@+id/export_text"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:drawableLeft="@drawable/up_arrow"
Android:drawableStart="@drawable/up_arrow"
Android:gravity="center|start"
Android:text="....."
Android:textSize="@dimen/font_size15" >
</TextView>
Si vous ne souhaitez pas modifier ImageView et TextView, vous pouvez modifier la version dans AndroidManifest.xml comme suit:
<uses-sdk`
Android:minSdkVersion="8"
Android:targetSdkVersion="18"
/>
Si votre version est Android: targetSdkVersion = "17" changez-la "18".
J'espère que cela corrigera. Je l'ai fait et je l'ai bien fait
Ajouter tools:ignore="UseCompoundDrawables"
à <LinearLayout>
.