2012-02-15 2 views
3

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

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

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

благодаря

**

EDIT:

** вот моя раскладка деятельность

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

ответ

1

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

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

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

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

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

+0

Я закончил реализацию собственного пользовательского представления –

2

набор атрибутов 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" /> 
+0

К сожалению, это не сработало –

+0

хммм .... попробовать 'listView.setOverScrollMode (View.OVER_SCROLL_ALWAYS)' –

+0

не получилось, я считаю, что это что-то делать с эмиссией фокусируемости –

Смежные вопросы