ListView внутри GridView не прокручивается? - PullRequest
3 голосов
/ 15 февраля 2012

У меня есть GridView, который отображает элементы, каждый элемент является ListView.

проблема в том, что я не могу прокрутить элементы ListView, похоже, что GridView получает фокус или мешает ему из ListViews

есть ли обходной путь для этого?

спасибо

**

РЕДАКТИРОВАТЬ:

**вот мой макет активности

<GridView
        android:id="@+id/grid"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:verticalSpacing="35dp"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:columnWidth="300dp"
        android:stretchMode="columnWidth"

        />
</LinearLayout>

каждый элемент gridview имеет следующий макет:

<?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="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/list"
         />

</LinearLayout>

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

установить атрибут android:scrollingCache="true" в вашем ListView

<ListView android:id="@+id/android:list" 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:scrollingCache="true"
   android:layout_weight="1" />
1 голос
/ 16 февраля 2012

Вы не можете иметь прокручиваемое дочернее представление в родительском представлении, которое можно прокручивать. Google не рекомендует это ... и это действительно грязно. Читать это

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

Одна из основных причин, по которой он не работает, заключается в том, как прокручиваемые виды обрабатывают прикосновения. Есть метод с именем dispatchTouchEvent() и onInterceptTouchEvent(), который решает, перехватить ли событие касания или передать его своим детям. Для прокручиваемых видов они всегда будут перехватывать движения «смахивания». Так что это никогда не пойдет на ваших детей.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...