2012-12-13 6 views
30

Voglio creare il frammento che visualizzerebbe il menu statico come un insieme di righe in un elenco.Definisci la visualizzazione elenco con elementi statici su Android in xml?

Mi piace il metodo iOS con celle statiche in una vista tabella. Come posso raggiungere questo obiettivo in Android (quindi nessun codice è necessario per definire gli elementi, solo XML)

Esiste un modo regolare per definire gli elementi statici in xml modo in cui accanto

(pseudo-codice)

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> 

Quindi, in pratica, voglio "includere" righe in lista e farlo su livello xml (senza codice).

+0

Non ho idea del perché qualcuno downvoted questa domanda, perché ho avuto la stessa domanda. Quindi +1 per compensare il downvote e perché sono venuto qui cercando una risposta esattamente a questa domanda. – BruceHill

risposta

21

Sfortunatamente, la definizione della vista elenco tramite xml è vietata. È necessario un pasticcio con gli adattatori.

+19

Non riesco a credere fino a che punto le API Android restino indietro rispetto a Microsoft in termini di progettazione della GUI. La loro roba basata su XML è molto meglio. – PawelP

11

È possibile utilizzare un LinearLayout verticale nidificato in una ScrollView per ottenere ciò che si sta cercando. Metti i tuoi oggetti "listview" all'interno del LinearLayout e modellali per assomigliare agli elementi di un listview.

Se è assolutamente necessario utilizzare un ListView (ad esempio, si sta utilizzando ListFragment), sarà necessario utilizzare una sottoclasse ListAdapter o eseguire il rollover.

20

qualche progresso può essere fatto utilizzando una stringa-array, per esempio,

<?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> 

coppia con

<?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> 

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

+0

Se utilizzo Android: voci, come posso personalizzare i miei layout di righe? Grazie – Ricardo

+0

@ Ricardo, non capisco la tua domanda. – user2768

+1

@ Ricardo, questo funziona solo con le viste elenco stringa. Se si desidera utilizzare layout personalizzati, per ciascun elemento nell'elenco, è preferibile utilizzare adattatori o l'approccio suggerito in [risposta di David Viehtauer] (http://stackoverflow.com/a/31456900/3676145) – marrock

5

realtà c'è un modo! Riutilizzo layout con include - Tag

Basta definire un layout che si desidera riutilizzare.

<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> 

quindi includere nel vostro ViewGroup tante volte quanto richiesto

<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> 

È inoltre possibile sostituire tutti i parametri di layout (qualsiasi Android: layout_ attributi *) di vista principale del layout di incluso specificando loro nel tag. Per esempio:

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

Maggiori informazioni su http://developer.android.com/training/improving-layouts/reusing-layouts.html

Problemi correlati