список внутри прокрутки - PullRequest
       22

список внутри прокрутки

1 голос
/ 22 октября 2010

На моем экране у меня есть представление списка и кнопка.мой список имеет как 8 пункт.Я хотел бы, чтобы мой экран прокручивался, если оба эти элемента не помещаются. Я не хочу, чтобы в моем списке была прокрутка, но полный макет, включающий и список, и кнопку.Если я использую приведенный ниже макет, он отображается только для элемента внутри списка, и мне нужно прокрутить список, чтобы перейти к следующему элементу.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent" >
<LinearLayout
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

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

        <Button android:text="Search" android:id="@+id/carSearchButton"
            android:layout_gravity="center_horizontal" android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>

Ответы [ 3 ]

2 голосов
/ 22 октября 2010

Вы не можете поместить ListView внутри ScrollView. GridView или любого другого вида, который обрабатывает прокрутку на той же оси, что и ScrollView. Таким образом, фреймворк не будет знать, какой View должен обрабатывать событие прокрутки. Этот компоновщик не выдаст ошибку при компиляции, но он не будет работать должным образом.

Что вы должны сделать здесь: сбросить внешний ScrollView, он вам не нужен. Используйте только ListView и добавьте кнопку в ListView, используя .addFooter (), это самый простой способ. Таким образом, ваша кнопка будет отображаться как элемент списка, но вам не нужно возиться с пользовательским адаптером.

1 голос
/ 24 октября 2010

Scythe вроде отвечает на мой вопрос, но мне нужно было больше одного элемента управления под списком, а на другом экране я хотел 2 списка. Поэтому, чтобы полоса прокрутки работала со списком, мне нужно было зафиксировать высоту списка.

0 голосов
/ 14 сентября 2013

Если ваша проблема с ListView не прокручивается внутри ScrollView, вот решение для этого.

Реализация собственного списка ListView, расширяющего класс ListView, и реализация в нем метода ниже.

 </p>

@Override
    public boolean onTouchEvent(MotionEvent ev) {
        int action = ev.getAction();
        switch (action) {
        case MotionEvent.ACTION_DOWN:
            // Disallow ScrollView to intercept touch events.
            this.getParent().requestDisallowInterceptTouchEvent(true);
            break;

        case MotionEvent.ACTION_UP:
            // Allow ScrollView to intercept touch events.
            this.getParent().requestDisallowInterceptTouchEvent(false);
            break;
        }

        super.onTouchEvent(ev);
        return true;
    }

Дайте мне знать, если это решит вашу проблему?

...