Wenn ich das Layout für eine bestimmte XML-Datei ausführe, wird Folgendes angezeigt:
This tag and its children can be replaced by one <TextView/>
and a compound drawable
Welche Änderung sollte für den folgenden XML-Code vorgenommen werden:
<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>
So sieht es auf dem Bildschirm aus:
Das Kamerasymbol ist die Standardeinstellung. Wenn Sie darauf klicken, kann der Benutzer ein anderes Bild auswählen.
Antworten:
Um die Antwort von Romain Guy zu erweitern, hier ein Beispiel.
Vor:
Nach dem:
quelle
Führen Sie das
TextView
und dasImageView
zu einem zusammen, indem Sie diesetCompoundDrawable*()
Methoden von TextView verwenden oder verwendenandroid:drawableLeft
.quelle
setCompoundDrawable()
sich nicht um Ihr Drawable, wie es ist, Sie müssen es aufrufensetBounds
(siehe API ). Zum Festlegen können Sie die vorherigen Grenzen mit demTextView.getCompoundDrawables()
abrufen, auf den richtigen zeichnbaren Index zugreifen und schließlich aufrufengetBounds()
.Ich dachte, ich würde versuchen, auch dafür ein paar zusätzliche Puntos zu bekommen: Sie können mit dem Bild und dem Text einen Abstand hinzufügen
android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741quelle
Manchmal ist es möglich , zu ersetzen
ImageView
(oder mehr) undTextView
mit einemTextView
mit der Verbindung drawable (s). Es gibt nicht viele Parameter , die angewendet werden können native API und diese zur Verbindung ziehbar mit TextViewRichDrawable Bibliothek , aber wenn Sie einen Textview verwalten kann anstelle von Linearlayout verwenden , sollten Sie es auf jeden Fall verwenden .Die Liste der Attribute und Parameter, die auf zusammengesetzte Zeichen angewendet werden können:
Größe: ( JA, wirklich ):
Setzen Sie sogar die Vektorressource als zeichnbar:
Drawable's Padding mit nativer API
android:drawablePadding
-> LinkHier ist ein Beispiel:
quelle
A ,
LinearLayout
die ein enthältImageView
und eineTextView
kann effizienter als eine Verbindung drawable (eine einzelne behandelt werdenTextView
unter Verwendung derdrawableTop
,drawableLeft
,drawableRight
und / oderdrawableBottom
Attribute ein oder mehrere Bilder neben dem Text zu ziehen).Wenn die beiden Widgets durch Ränder voneinander versetzt sind, kann dies durch ein
drawablePadding
Attribut ersetzt werden.Es gibt einen Flusen-Quickfix, um diese Konvertierung im Eclipse-Plugin durchzuführen.
Von: Offizielle API-Dokumente für Android!
quelle
Hinzufügen
tools:ignore="UseCompoundDrawables"
zu<LinearLayout>
.quelle
Als ich den obigen Code befolgte, wurde der Text in der Textansicht nicht richtig eingestellt. Sie müssen die Schwerkraft auf zentrieren | starten, um das zu erreichen, was in der gestellten Frage gezeigt wird.
Die Textansicht sieht folgendermaßen aus:
quelle
Wenn Sie ImageView und TextView nicht ändern möchten, können Sie die Version in der Datei AndroidManifest.xml wie folgt ändern:
Wenn Ihre Version Android ist: targetSdkVersion = "17" ändern Sie es ist "18".
Hoffe das wird korrigiert. Ich habe es getan und es richtig gemacht
quelle
Ein anderer Ansatz ist das Einbetten des ViewImage in ein anderes LinearLayout (erlauben Sie es, es mit einer alleinigen ID zu behandeln):
quelle
quelle