android 之 ListView 裡面嵌套 GridView 遇到的問題及其解決方案。

來源:互聯網
上載者:User

標籤:

我們直接入主題。所有問題例子請參照

 

1,怎樣使圖片具有點擊事件?

答:

     解決方案:

     在你的BaseAdapter裡面不要設定下面這三個東西,然後再設定GridView的onItemClick。

     gridView.setClickable(false);

      gridView.setPressed(false);

      gridView.setEnabled(false);

 

 

2,為什麼我在已經處理了listView點擊事件阻斷的情況下,同時圖片具有點擊事件,此時再點擊和圖片同高度的空白處,卻無法執行listView的item點擊事件,點擊其它非同高度地方,例如點擊文字卻可以。

答:

    原因:

    GridView 格子中的View 有點擊事件,證明你沒阻斷,之所以點擊和圖片同高度的空白處沒有執行 listView 的點擊事件是你的GridView 霸佔了整行,即使你的格子只有一個,驗證我這句話就是給GridView 設定個背景,若非如此請留言,我幫你 fix。

    解決方案:

    動態給你的 GridView 設定寬度,不要使用 Wrap_Parent 等.

 

3,如何動態地給嵌套在Listview 裡面的 GridView 設定寬、高度?

答:

   解決方案:

   GridView 沒有setWidth() 等操作,你必須使用 setLayoutParams() 來搞定。

 

4,為什麼我給 GridView 設定了setLayoutParams() 後被拋出強轉類型失敗異常,程式崩潰?


答:

    原因/解決方案:

    如果你的 GridView 是某個View 的子 View,例如你使用 LinearLayout 包裹 GridView,那麼你的GridView要設定的 setLayoutParams() 所傳入的 LayoutParams 必須要是LinearLayout。即是

ViewGroup.LayoutParams linearParams =new LinearLayout.LayoutParams((70,70);

gridView.setLayoutParams(linearParams);    否則拋出異常。

 

5,為什麼我動態設定了 GridView 的寬度後,發現 格子 有錯位、重疊、間隙太大、很醜很沒幸福感的現象?

答:

    原因:

    寬度、間隙太大--你的 GridView 如果使用預設的排版方式,即是如果你是沒有設定 gridView.setStretchMode(GridView.NO_STRETCH); 的話,那麼它就是把寬度平均分來顯示每個格子的,這樣會造成。解決方案是設定GridView.NO_STRETCH,然後是自訂格子寬度和間隙。或者設定好 GridView的寬度。

    重疊、遮擋的現象--如果你設定了GridView.NO_STRETCH,那麼就可能會出現重疊、遮擋的現象,解決方案是動態測量裝置寬度再使用等比例來設定理想格子寬度,既不影響格子的點擊,又能相應 ListView 的Item 點擊,例如:

    int myWidth = 80; // 這個值是你的顯示圖片的寬度,例如我的ImageView,我設定了它寬為80dp,那麼就是80

    int distance = 3;//這個是每個格子之間的 間隙

    int userPhoneWidth = 裝置的寬度; // 自己使用代碼擷取

    int myPhoneWith = 1080 ; // 這個是你測試的裝置的寬度,我的是1080

    公式計算,先聲明下,上面4個值一旦確定了就適用於所有裝置,因為採用的是等比縮放,也測試過。

    (其他手機的理想格子寬度)/userPhoneWidth = myWidth/myPhoneWith,簡單化簡後:

    理想格子寬度 = userPhoneWidth * myWidth / myPhoneWith 

    gridView.setHorizontalSpacing((userPhoneWidth+3) * 最大格子數 * myWidth / myPhoneWith); //採用GridView.NO_STRETCH 後設定間距

 

 

6,為什麼我 點擊文字下面的部分 無法執行 listView 的 item 點擊事件?

答:典型的事件阻斷,針對這種的解決方案,百度上面大把解決方案。我這裡不羅嗦。

 

最終,我項目的 ListView 嵌套 GridView 後的效果是滿足上述所有想要的效果。

android 之 ListView 裡面嵌套 GridView 遇到的問題及其解決方案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.