国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android筆記之:在ScrollView中嵌套ListView的方法

2020-04-11 12:21:10
字體:
來源:轉載
供稿:網友
前幾天因為項目的需要,要在一個ListView中放入另一個ListView,也即在一個ListView的每個ListItem中放入另外一個ListView。但剛開始的時候,會發現放入的小ListView會顯示不完全,它的高度始終有問題。上網查了下,發現別人也有遇到這樣的問題,而大多數人都不推薦這樣的設計,因為默認情況下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是無法計算的。

又搜索了一下,發現有StackOverflow上的牛人已經解決了這個問題,經過試驗發現是可以解決問題的,它的思路就是在設置完ListView的Adapter后,根據ListView的子項目重新計算ListView的高度,然后把高度再作為LayoutParams設置給ListView,這樣它的高度就正確了.
以下是源碼: 
復制代碼 代碼如下:

    public class Utility {
        public static void setListViewHeightBasedOnChildren(ListView listView) {
            ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null) {
                // pre-condition
                return;
            }
            int totalHeight = 0;
            for (int i = 0; i < listAdapter.getCount(); i++) {
                View listItem = listAdapter.getView(i, null, listView);
                listItem.measure(0, 0);
                totalHeight += listItem.getMeasuredHeight();
            }
            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
            listView.setLayoutParams(params);
        }
    }

只要在設置ListView的Adapter后調用此靜態方法即可讓ListView正確的顯示在其父ListView的ListItem中。但是要注意的是,子ListView的每個Item必須是LinearLayout,不能是其他的,因為其他的Layout(如RelativeLayout)沒有重寫onMeasure(),所以會在onMeasure()時拋出異常。

在ScrollView中嵌套ListView(或者ScrollView)的另外一個問題就是,子ScrollView中無法滑動的(如果它沒有顯示完全的話),因為滑動事件會被父ScrollView吃掉,如果想要讓子ScrollView也可以滑動,只能強行截取滑動事件,有牛人在論壇中發過代碼說可以。雖然我沒有親自試過,但估計是可行的。

雖然在ScrollView中顯示ScrollView在技術上的難題可以攻破,但是這樣的設計卻是非常差的用戶體驗因為用戶會不容易看到和操作子ScrollView中的內容。比如好的設計是,父ListView的每個Item只顯示概括性的描述,然后點擊其Item會進入另外一個頁面來詳細描述和展示以及對這個Item的操作。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢龙县| 卢氏县| 体育| 丰台区| 武宣县| 东源县| 项城市| 卢龙县| 长岛县| 保康县| 榆树市| 泰和县| 云安县| 贡嘎县| 靖宇县| 锡林浩特市| 临武县| 福安市| 鱼台县| 武鸣县| 康平县| 安岳县| 玉门市| 大兴区| 寿阳县| 怀化市| 天全县| 仲巴县| 邢台县| 太康县| 丰顺县| 麦盖提县| 永年县| 藁城市| 四会市| 神池县| 定南县| 噶尔县| 泸定县| 泸定县| 南阳市|