Frage

Ich habe versucht, eine RelativeLayout mit einer Header, Body (Liste) und Fußzeile zu erstellen. Ich mag, dass die Kopfzeile über alles (ausgerichtet nach oben) sein, wobei der Körper (Liste) unter der Überschrift sein (beim Scrollen) und die Fußzeile (ausgerichtet nach unten) über dem Körper (Liste) zu sein - nur dann, wenn es sichtbar ist.

Ich habe es geschafft, so perfekt zu tun, wenn es darum geht, wie die Dinge aussehen, aber anscheinend das XML-Layout ist die Ursache für die Probleme ich mit habe, wenn sie auf listitems ( siehe a href hier , <=" https://stackoverflow.com/questions/4019308/android-list-getcheckeditempositions -Rendite-somit sehr passgenau null "> und hier ).

Um die Probleme zu lösen, hatte ich das Listview mit Linearlayout wickeln und legte es zwischen der Kopf- und Fußzeile (in XML). Dies löst das listitems Klicken auf Probleme, sondern schafft ein neues Problem - die Fußzeile Häute das letzte Listview-Element, auch wenn die Liste unter der Überschrift geht, wenn es nach unten scrollen

.

Ich bin ziemlich verzweifelt hier: \

Dies ist der XML, die ein perfektes Layout erstellt, sondern bewirkt, dass die Liste Menupunkt Themen:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="#ffffff"
    >
    <RelativeLayout
        android:background="@drawable/top_background"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:id="@+id/top_control_bar"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Droidmarks"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@+id/add_bookmark"
            android:textSize="20dip"
            android:textColor="#a0cb26"
            android:shadowColor="#7a9b1b"
            android:shadowRadius="5"
            android:layout_marginLeft="5dip"
            android:gravity="left|center" />
        <Button
            android:id="@+id/add_bookmark"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|center"
            android:layout_alignParentRight="true"
            android:text="Add"
        />
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/bottom_control_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/top_background"
        android:visibility="invisible"
        >
        <Button
            android:id="@+id/test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|center"
            android:layout_alignParentRight="true"
            android:text="Add"
        />
    </LinearLayout>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/top_control_bar"
        android:layout_above="@id/bottom_control_bar"
        android:drawSelectorOnTop="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:cacheColorHint="#ffffff"
        android:listSelector="@drawable/selected_item"
        />
    <TextView android:id="@android:id/empty" android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="No Bookmarks found. You can add one by clicking the star."
        android:layout_below="@id/top_control_bar" android:layout_above="@id/bottom_control_bar" />
</RelativeLayout>

Dies ist der XML, die das letzte Listenelement, sondern löst das Klicken Probleme verbergen:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="#ffffff"
    >
    <RelativeLayout
        android:background="@drawable/top_background"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:id="@+id/top_control_bar"
        android:layout_alignParentTop="true"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Droidmarks"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@+id/add_bookmark"
            android:textSize="20dip"
            android:textColor="#a0cb26"
            android:shadowColor="#7a9b1b"
            android:shadowRadius="5"
            android:layout_marginLeft="5dip"
            android:gravity="left|center" />
        <Button
            android:id="@+id/add_bookmark"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|center"
            android:layout_alignParentRight="true"
            android:text="Add"
        />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/listArea"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@id/top_control_bar"
        >
        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="false"
            android:cacheColorHint="#ffffff" />
        <TextView android:id="@android:id/empty" android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="No Bookmarks found. You can add one by clicking the star." />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/bottom_control_bar"
        android:layout_above="@id/listArea"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/top_background"
        android:orientation="horizontal"
        android:visibility="visible"
        >
        <Button
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|center"
        android:layout_alignParentRight="true"
        android:text="Add"
    />
    </LinearLayout>
</RelativeLayout>

ich jede Hilfe dankbar würde irgendwie eine Lösung für beide Probleme finden!

Danke!

War es hilfreich?

Lösung

Darf ich fragen, warum Sie eine RelativeLayout überhaupt für den Behälter mit? Es scheint wie ein perfekter Ort, um nur ein Linearlayout mit einem gewichteten mittleren Bereich zu verwenden (die Listenansicht), das all übrigen Bereich nach dem wrap_height-Set Kopf- und Fußzeile nehmen Set up. RelativeLayouts sind ideal für tief verschachtelten Layouts vereinfacht, die sowohl horizontale als auch vertikale Elemente enthalten, aber Ihr hier äußere Schicht enthält nur drei vertikale Elemente sowieso, also mit einem Linearlayout mit orientation:vertical gehen, wenn ich hier etwas fehlt bin.

EDIT: Kurz gesagt, versuchen Sie dies; diese sollten Sie eine feste Höhe Header, eine Wickelhöhe Fußzeile und den mittleren Bereich geben alle verbleibenden Platz einnehmen. Stellen Sie sicher, dass das äußere Layout auf fill_parent Höhe und der mittlere Bereich ist mit einer festen Höhe eingestellt, aber mit einem layout_weight="1". Ich mag „0px“ für die Basis layout_height zu verwenden, wenn ich verwende layout_weight nur, es mir zu halten zu löschen, wenn ich wieder und wieder gelesen es später.

<?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"
    android:background="#ffffff"
    >
    <RelativeLayout
        android:background="@drawable/top_background"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:id="@+id/top_control_bar"
        > <!-- snip - inner contents unchanged -->
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/listArea"
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:orientation="horizontal"
        ><!-- snip - inner contents unchanged -->
    </LinearLayout>

    <LinearLayout
        android:id="@+id/bottom_control_bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/top_background"
        android:orientation="horizontal"
        android:visibility="visible"
        ><!-- snip - inner contents unchanged -->
    </LinearLayout>
</LinearLayout>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top