2012-12-13 5 views
30

Ich möchte ein Fragment erstellen, das statische Menü als eine Reihe von Zeilen in einer Liste anzeigen würde.Listenansicht mit statischen Elementen auf Android in XML definieren?

Ich mag iOS-Methode mit statischen Zellen in einer Tabellenansicht. Wie kann ich dies in Android erreichen (so wird kein Code benötigt Elemente, nur xml zu definieren)

Gibt es eine regelmäßige Art und Weise statische Elemente in XML zu definieren nächste Weise

(Pseudo-Code)

list_view.xml 

<List view> 
    - use element my_row with onclick=row1_clicked and title="row 1" 
    - use element my_row with onclick=row2_clicked and title="row 2" 
    - use element my_row with onclick=row3_clicked and title="row 3" 
    - use element my_row with onclick=row4_clicked and title="row 4" 
</List view> 

my_row.xml 

<My Row> 
    - text field (title should go here) 
    - on click (on click should go here) 
</My Row> 

Also im Grunde möchte ich Zeile in Liste "aufnehmen" und tun es auf XML-Ebene (ohne Code).

+0

habe ich keine Ahnung, warum jemand diese Frage Downvoted, weil ich die gleiche Frage hatte. Also +1 für den Downvote und weil ich hierher gekommen bin, um genau diese Frage zu beantworten. – BruceHill

Antwort

21

Leider ist die Listenansichtsdefinition über XML verboten. Mess mit Adaptern ist stattdessen erforderlich.

+19

Ich kann nicht glauben, wie weit Android-API in Bezug auf GUI-Design hinterherhinkt. Ihr XML-basiertes Zeug ist einfach so viel besser. – PawelP

11

Sie können ein vertikales LinearLayout verwenden, das in einer ScrollView verschachtelt ist, um das zu erhalten, wonach Sie suchen. Setzen Sie Ihre "listview" -Elemente in das LinearLayout und stylen Sie sie so, dass sie wie Elemente einer Listenansicht aussehen.

Wenn Sie unbedingt eine ListView verwenden müssen (z. B. wenn Sie ListFragment verwenden), müssen Sie eine ListAdapter-Unterklasse verwenden oder eine eigene erstellen.

20

einige Fortschritte mit einem String-Array, zum Beispiel gemacht werden

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/sports_array"/> 
</LinearLayout> 

Paar mit

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="sports_array"> 
    <item>Shuttle Badminton</item> 
    <item>Tennis</item> 
    <item>FootBall</item> 
    </string-array> 
</resources> 

Quelle: http://theopentutorials.com/tutorials/android/listview/android-creating-and-populating-listview-items-in-xml/

+0

Wenn ich Android: Einträge verwende, wie kann ich meine Zeilenlayouts anpassen? Danke – Ricardo

+0

@Ricardo, ich verstehe deine Frage nicht. – user2768

+1

@Ricardo, dies funktioniert nur mit String Listenansichten. Wenn Sie benutzerdefinierte Layouts für jedes Element in der Liste verwenden möchten, verwenden Sie vorzugsweise Adapter oder die in [David Viehtaus Antwort] vorgeschlagene Methode (http://stackoverflow.com/a/31456900/3676145). – marrock

5

Eigentlich ist es eine Möglichkeit! Wiederverwendung von Layouts mit einschließlich - Tag

Definieren Sie einfach ein Layout, das Sie wiederverwenden möchten.

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"/> 
<ImageView 
     android:id="@+id/profileImage" 
     android:layout_width="128dp" 
     android:layout_height="128dp" 
     android:src="@drawable/lena" /> 
<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/profileOnline"/> 
</LinearLayout> 

Dann schließen Sie es in Ihrem Viewgroup so oft erforderlich, wie

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width=”match_parent” 
    android:layout_height=”match_parent” 
    android:gravity="center_horizontal"> 

    <include layout="@layout/titlebar"/> 

    <TextView android:layout_width=”match_parent” 
       android:layout_height="wrap_content" 
       android:text="@string/hello" 
       android:padding="10dp" /> 

    ... 

</LinearLayout> 

Sie können auch alle Layout-Parameter außer Kraft setzen (alle Android: layout_ * Attribute) der Stammansicht des enthalten Layout, indem sie die Angabe im Tag. Zum Beispiel:

<include android:id=”@+id/news_title” 
     android:layout_width=”match_parent” 
     android:layout_height=”match_parent” 
     layout=”@layout/title”/> 

Weitere Informationen unter http://developer.android.com/training/improving-layouts/reusing-layouts.html

Verwandte Themen