日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。

發布時間:2025/6/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

?

?

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 遇到的问题及其解决方法。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。