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 la caméra est la valeur par défaut. En cliquant dessus, l'utilisateur aura la possibilité de choisir une autre image.
Réponses:
Pour développer la réponse de Romain Guy, voici un exemple.
Avant:
Après:
la source
Fusionnez le
TextView
et leImageView
en un seul, en utilisant lessetCompoundDrawable*()
méthodes de TextView ou en utilisantandroid:drawableLeft
.la source
setCompoundDrawable()
ne s'occupera pas de votre dessinable tel quel, vous devez faire appelsetBounds
dessus (voir API ). Pour le définir, vous pouvez obtenir les limites précédentes en utilisant leTextView.getCompoundDrawables()
, en accédant au bon index dessinable et enfin en appelantgetBounds()
.Je pensais que j'essaierais également d'obtenir des puntos supplémentaires pour cela: vous pouvez ajouter un remplissage entre l'image et le texte en utilisant
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741la source
Parfois, il est possible de remplacer
ImageView
(ou de multiples) etTextView
avec unTextView
avec des tiroirs composés. Il n'y a PAS beaucoup de paramètres qui peuvent être appliqués à un composé dessiné à l'aide de l'API native et de cette bibliothèque TextViewRichDrawable , mais si vous pouvez gérer un TextView au lieu d'utiliser LinearLayout, vous devez absolument l'utiliser .La liste des attributs et paramètres qui peuvent être appliqués aux tirages composés:
Taille: ( OUI, vraiment ):
Même définir la ressource vectorielle comme dessinable:
Remplissage de Drawable utilisant l'API native
android:drawablePadding
-> lienVoici un exemple:
la source
A ,
LinearLayout
qui contient unImageView
et unTextView
peut être plus efficacement traitées en tant que étirable de composé (un seulTextView
, en utilisant ladrawableTop
,drawableLeft
,drawableRight
et / ou lesdrawableBottom
attributs de tirer 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
drawablePadding
attribut.Il existe un correctif rapide de peluches pour effectuer cette conversion dans le plugin Eclipse.
De: Documentation de l'API officielle Android!
la source
Ajouter
tools:ignore="UseCompoundDrawables"
à<LinearLayout>
.la source
Lorsque j'ai suivi le code ci-dessus, le texte à l'intérieur du TextView n'est pas défini correctement. Vous devez régler sa gravité au centre | commencer pour obtenir ce qui est indiqué dans la question posée.
La vue textuelle ressemble à ceci:
la source
Si vous ne souhaitez pas modifier ImageView et TextView, vous pouvez modifier la version dans AndroidManifest.xml comme suit:
Si votre version est android: targetSdkVersion = "17" changez-la en "18".
J'espère que cela va rectifier. Je l'ai fait et je l'ai bien fait
la source
Une autre approche consiste à incorporer ViewImage dans un autre LinearLayout (autorisez-le à le gérer avec un seul id):
la source
la source