欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年05月23日 11:01:18   作者:  
本篇文章是對Android中在ScrollView中嵌套ListView的方法進行了詳細的分析介紹,需要的朋友參考下
前幾天因為項目的需要,要在一個ListView中放入另一個ListView,也即在一個ListView的每個ListItem中放入另外一個ListView。但剛開始的時候,會發(fā)現(xiàn)放入的小ListView會顯示不完全,它的高度始終有問題。上網(wǎng)查了下,發(fā)現(xiàn)別人也有遇到這樣的問題,而大多數(shù)人都不推薦這樣的設計,因為默認情況下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是無法計算的。

又搜索了一下,發(fā)現(xiàn)有StackOverflow上的牛人已經(jīng)解決了這個問題,經(jīng)過試驗發(fā)現(xiàn)是可以解決問題的,它的思路就是在設置完ListView的Adapter后,根據(jù)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后調(diào)用此靜態(tài)方法即可讓ListView正確的顯示在其父ListView的ListItem中。但是要注意的是,子ListView的每個Item必須是LinearLayout,不能是其他的,因為其他的Layout(如RelativeLayout)沒有重寫onMeasure(),所以會在onMeasure()時拋出異常。

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

雖然在ScrollView中顯示ScrollView在技術上的難題可以攻破,但是這樣的設計卻是非常差的用戶體驗因為用戶會不容易看到和操作子ScrollView中的內(nèi)容。比如好的設計是,父ListView的每個Item只顯示概括性的描述,然后點擊其Item會進入另外一個頁面來詳細描述和展示以及對這個Item的操作。

相關文章

  • Android自定義方框EditText注冊驗證碼

    Android自定義方框EditText注冊驗證碼

    這篇文章主要為大家詳細介紹了Android自定義方框EditText注冊驗證碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 學習Android自定義Spinner適配器

    學習Android自定義Spinner適配器

    這篇文章主要為大家詳細介紹了學習Android自定義Spinner適配器的相關資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android圓角按鈕的制作方法

    Android圓角按鈕的制作方法

    這篇文章主要為大家詳細介紹了Android圓角按鈕的制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • SimpleCommand框架介紹以及簡單使用(一)

    SimpleCommand框架介紹以及簡單使用(一)

    這篇文章主要為大家詳細介紹了SimpleCommand框架以及簡單使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android實現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能

    Android實現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能

    這篇文章主要介紹了Android實現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能,文中還給大家?guī)硭姆N方法,大家可以根據(jù)自己需要參考下
    2018-07-07
  • android 下載時文件名是中文和空格會報錯解決方案

    android 下載時文件名是中文和空格會報錯解決方案

    項目中遇到了下載文件文件名是中文而且還有空格如果不對連接進行處理下載就會報錯要想解決這個問題只需對你的url進行編碼然后替換空格用編碼表示,感興趣的朋友可以詳細了解下
    2013-01-01
  • PowerManagerService之亮屏流程示例分析

    PowerManagerService之亮屏流程示例分析

    這篇文章主要為大家介紹了PowerManagerService之亮屏流程示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android實現(xiàn)多參數(shù)文件和數(shù)據(jù)上傳

    Android實現(xiàn)多參數(shù)文件和數(shù)據(jù)上傳

    這篇文章主要為大家詳細介紹了Android實現(xiàn)多參數(shù)文件和數(shù)據(jù)上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android實現(xiàn)搜索本地音樂的方法

    Android實現(xiàn)搜索本地音樂的方法

    這篇文章主要為大家詳細介紹了Android實現(xiàn)搜索本地音樂的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android RecyclerView使用入門介紹

    Android RecyclerView使用入門介紹

    RecyclerView是Android一個更強大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現(xiàn)數(shù)據(jù)縱向滾動,也可以實現(xiàn)橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法
    2022-10-10

最新評論