Android: окно с возможностью прокрутки и настраиваемый вид списка - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть действие с представлением списка, которое заполняется настройками из файла xml, затем другое представление списка, которое заполняется данными в моей базе данных, затем текстовое представление и текст редактирования.

Я хочу каждый элемент (включая все виды списка) на экране, чтобы взять их полную высоту, и весь экран можно прокручивать, но я не могу понять, как это сделать!

Ниже мой xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:fillViewport="true" >

    <LinearLayout
        android:id="@+id/llContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/llPreferences"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ListView
                android:id="@android:id/list"
                android:layout_width="fill_parent"
                    android:layout_height="wrap_content">
            </ListView>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/llPlaces"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:weightSum="1" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textAppearance="?android:attr/textAppearanceLarge" >
            </TextView>

            <ListView
                android:id="@+id/lstPlaces"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
            </ListView>

            <LinearLayout
                android:id="@+id/llAddNewPlace"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <EditText
                    android:id="@+id/txtNewPlaceName"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" >
                </EditText>

                <Button
                    android:id="@+id/btnAddNewPlace"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Add New" >
                </Button>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</ScrollView>

Есть идеи, почему это не работает так, как я хочу и ожидал?

Спасибо, Макс.

Ответы [ 3 ]

0 голосов
/ 02 декабря 2011

Никогда не помещайте ListView внутри ScrollView, потому что нет хорошего способа различить два вложенных прокручиваемых контейнера.

0 голосов
/ 02 декабря 2011

Similer проблема с решением по этой теме:

Проблема макета Android ScrollView

К сожалению, похоже, что у вас не может быть списка в прокрутке.

Для тех, кто заинтересован, похоже, что здесь или в будущем можно найти потенциальный обходной путь:

ListView в ScrollView потенциальный обходной путь

0 голосов
/ 02 декабря 2011

Ну, во-первых, на самом деле нет никаких причин для инкапсуляции вашего ListView внутри линейного макета внутри линейного макета.На самом деле, нет никакой причины заключать какие-либо ваши взгляды в две LinearLayouts.Попробуйте это и посмотрите, что произойдет:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:fillViewport="true" >

    <LinearLayout
        android:id="@+id/llContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </ListView>

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textAppearance="?android:attr/textAppearanceLarge" >
        </TextView>

        <ListView
            android:id="@+id/lstPlaces"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </ListView>

        <EditText
            android:id="@+id/txtNewPlaceName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </EditText>

        <Button
            android:id="@+id/btnAddNewPlace"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add New" >
        </Button>

    </LinearLayout>

</ScrollView>
...