android ScrollView同時(shí)嵌套ListView和GridView 無法正常顯示

今天在優(yōu)化項(xiàng)目的時(shí)候發(fā)現(xiàn)需要用到ScrollView同時(shí)嵌套ListView和GridView ,普通的寫上去發(fā)現(xiàn) ListView和GridView 都無法正常顯示 (只顯示一行) ,這很憂傷啊 .

在網(wǎng)上找了點(diǎn)資料 ,問題解決了 ,在此記錄下來 :

/**
 * 自定義GridView  用于ScrollView 嵌套的問題
 * 重寫GridView,讓其失去滑動(dòng)特性:(重寫ListView也是和GridView重寫的方法一  樣)
 */
public class MyGridView extends GridView {

    public MyGridView (Context context, AttributeSet attrs){
        super(context, attrs);
    }

    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
        int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE     >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, mExpandSpec);
    }
}

對于ListView 我沒用上面的方法 ,我只設(shè)置ListView的高度 寫的一個(gè)工具類
/**
* 設(shè)置ListView高度
*/
public class ListViewUtil {

    public static void setListViewHeight(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }

        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            // 返回?cái)?shù)據(jù)項(xiàng)的數(shù)目
            View listItem = listAdapter.getView(i, null, listView);
            // 計(jì)算子項(xiàng)的高度
            listItem.measure(0, 0);
            // 統(tǒng)計(jì)所有子項(xiàng)的高度
            totalHeight += listItem.getMeasuredHeight();
        }  

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }
}

注意 : 要在
mList.setAdapter(listAdapter);
listAdapter.notifyDataSetChanged(); // 后調(diào)用
ListViewUtil.setListViewHeight(mList);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容