2012-02-15 63 views
3

我有一個顯示項目的GridView,每個項目是一個ListView。GridView裏面的ListView不滾動?

的問題是,我不能滾動ListView的項目,似乎是在GridView是獲得焦點或阻止它的列表視圖

有沒有辦法解決這個?

感謝

**

編輯:

** 這裏是我的活動佈局

<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

你不能有一個可滾動父視圖中的滾動子視圖。谷歌不推薦它......而且它真的很混亂。 Read this

有人一直在試圖做一個解決方法(這看起來不漂亮),但我懷疑它會爲你工作。但是,無論如何,你可以閱讀它,看看你是否可以爲你工作。 Enjoy

它不工作的主要原因之一是因爲可滾動視圖處理觸摸的方式。有一種方法稱爲dispatchTouchEvent()onInterceptTouchEvent(),它決定是否攔截觸摸事件或將它傳遞給它的孩子。對於可滾動的視圖,它們將始終攔截「滑動」動作。所以它永遠不會去你的孩子。

您可以嘗試對其進行修改,但是如果您仔細考慮它,您會如何知道您是要滾動父級還是要滾動孩子?想象一下,如果你的一個可滾動的孩子最終佔據了你的屏幕寬度,但是你想滾動你的父母,你將如何管理?

總結: 不推薦....如果你真的堅持......那麼繼續寫下自己的自定義視圖來處理邏輯。但我保證你不會很漂亮,並且幾乎不會適用於所有用例。

+0

我結束了實現我自己的自定義視圖 – 2012-02-19 08:06:56

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

對不起,沒有工作 – 2012-02-15 15:15:09

+0

嗯....嘗試'listView.setOverScrollMode(View.OVER_SCROLL_ALWAYS)' – 2012-02-15 15:20:57

+0

沒有任何工作,我相信這是與可聚焦性問題 – 2012-02-15 15:26:40