android mise en page: Cette balise et de ses enfants peut être remplacé par un <TextView/> et un composé drawable
Quand je les ai mise sur un fichier XML, j'obtiens ceci:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Ce changement doit être fait 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>
C'est à quoi il ressemble sur l'écran:
L'icône de la caméra est la valeur par défaut. En cliquant sur qui va donner à l'utilisateur la possibilité de choisir une autre image.
- +1, parce que la situation semble plus complexe que ce qui peut être traitées par le composé drawable. Si vous n'aviez pas accepté Romain réponse, vous ont peut-être eu un peu plus en profondeur réponse.
Vous devez vous connecter pour publier un commentaire.
À développer Romain Guy réponse, voici un exemple.
Avant:
Après:
Fusionner les
TextView
et laImageView
en un seul, en utilisant TextView desetCompoundDrawable*()
méthodes, ou à l'aide deandroid:drawableLeft
.setBounds
sur elle (voir API). Pour le réglage, vous pouvez obtenir le précédent limites à l'aide de laTextView.getCompoundDrawables()
, l'accès à la bonne drawable index et enfin l'appel degetBounds()
.Pensé que je voudrais essayer d'obtenir une partie supplémentaire de puntos pour cela: vous pouvez ajouter un rembourrage entre l'image et le texte à l'aide
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741Il est parfois possible de remplacer
ImageView
(ou de plusieurs) etTextView
avec unTextView
avec un composé de drawable(s). Il n'y a PAS beaucoup de paramètres qui peuvent être appliquées à des composés dessinés à l'aide des API natives et ce TextViewRichDrawable bibliothèque, mais si vous pouvez gérer un TextView au lieu d'utiliser LinearLayout vous devriez certainement utiliser.La liste des attributs et des paramètres qui peuvent être appliquées à composé un drawable:
Taille: (OUI, vraiment):
Même ensemble de vecteur de ressources comme drawable:
Drawable de Rembourrage à l'aide des API natives
android:drawablePadding
-> lienVoici un exemple:
Un
LinearLayout
qui contient unImageView
et unTextView
peutêtre gérées plus efficacement comme un composé drawable (un seul
TextView
, à l'aide de ladrawableTop
,drawableLeft
,drawableRight
et/ou
drawableBottom
attributs pour tirer une ou plusieurs imagesadjacent au texte).
Si les deux widgets sont décalés les uns des autres avec des marges, ce
peut être remplacé par un
drawablePadding
attribut.Il y a un chiffon quickfix pour effectuer cette conversion dans l'Eclipse
plugin.
À partir de: Android Officielle de l'API docs!
Quand j'ai suivi le code ci-dessus, le texte à l'intérieur de la TextView n'est pas réglé correctement.
Vous devez définir à sa gravité, centre|commencer à réaliser ce que démontré dans la question posée.
Le textview ressemble à ceci:
Si vous ne voulez pas changer l'ImageView et TextView, vous pouvez changer la version dans le AndroidManifest.xml comme:
Si votre version est android:targetSdkVersion="17" changement il s "18".
Espère que cela va permettre de corriger. Je l'ai fait et il a obtenu le droit
Ajouter
tools:ignore="UseCompoundDrawables"
à<LinearLayout>
.Une autre approche est d'intégrer la ViewImage dans un autre LinearLayout (permettre à manipuler avec seul id):