2016-05-05 17 views
0

Ich habe eine Listenansicht mit einem benutzerdefinierten Adapter und einem benutzerdefinierten Zeilenlayout erstellt, das ein ImageView und ein TextView enthält.Wie richtet man ein ImageView und ein TextView in einer benutzerdefinierten ListView-Zeile aus?

Was mein Problem ist, weil die Ansichten, die in meiner app Laufzeit dieses Ergebnis bis programmatisch erstellt werden, kommt für die Ex: enter image description here

* schwarze Rechtecken repräsentieren Symbole in jeder Zeile

Die Ansicht, die diese Ansichten enthält, ist das lineare Layout, und ich habe versucht, die Schwerkraft auf das Zentrum zu setzen. Es funktioniert. Aber wenn es um lange Titel geht, bewegt sich das Icon aus der Mitte.

Wie kann ich das folgende Ergebnis erreichen, mit welcher Titellänge auch immer kommt (aber nicht groß genug)?

enter image description here

Vielen Dank im Voraus! Meine XML-Datei:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:gravity="center"> 

    <ImageView 
     android:id="@+id/menu_item_icon" 
     android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginEnd="10dp"/> 

    <TextView 
     android:id="@+id/menu_item_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Item_name" 
     android:textColor="#fff" 
     android:textSize="16sp" 
     android:gravity="center" 
     android:layout_marginLeft="10dp" 
     android:layout_marginStart="10dp" 
     android:layout_gravity="center_vertical"/> 

</LinearLayout> 
+1

Sie bitte ur Artikel xml schreiben – varunkr

+0

Just added it :) – Kanellis

+0

Was meinst du mit "** programmatisch erstellt **"? Jede "ListView" wird mit einem XML-Code wie dem von Ihnen angegebenen erzeugt. Ich denke, Icons müssen in einer Position sein, die sich nicht ändert (zB: Anfang), und der Text kann so weit gehen, wie er benötigt wird. Das Zentrieren der Titel wird immer die Position der Symbole gemäß der Titellänge verpassen. Da der zweite Titel nicht richtig ausgerichtet ist, gibt es ein Problem beim Ausrichten von Listenelementen oder möglicherweise in den übergeordneten Beschränkungen –

Antwort

0

Do That:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    > 

    <ImageView 
     android:id="@+id/menu_item_icon" 
     android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginEnd="10dp"/> 

    <TextView 
     android:id="@+id/menu_item_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Item_name" 
     android:textColor="#fff" 
     android:textSize="16sp" 
     android:gravity="center" 
     android:layout_marginLeft="10dp" 
     android:layout_marginStart="10dp" 
     android:layout_gravity="center_vertical"/> 

</LinearLayout> 
0

diese

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:gravity="center"> 

<ImageView 
    android:id="@+id/menu_item_icon" 
    android:layout_width="32dp" 
    android:layout_height="32dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginStart="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginEnd="10dp" 
    android:layout_gravity="center_vertical"/> 

<TextView 
    android:id="@+id/menu_item_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Item_name" 
    android:textColor="#fff" 
    android:textSize="16sp" 
    android:gravity="center_vertical" 
    android:layout_gravity="center_vertical"/> 

1

Das ist unmöglich ausprobieren, weil die Dichte des linearen Layout ist "Zentrum ", sollten Sie die Schwerkraft dieses linearen l ändern ayout zu sein "links" und tun Sie Marge Sie wollen auf der linken Seite der Ansicht.

0

ändern gravity von LinearLayout zu left eingesetzten layout_marginLeft von ImageView

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:gravity="left"> 
     <ImageView 
     android:id="@+id/menu_item_icon" 
     android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:layout_marginLeft="50dp" 
Verwandte Themen