溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ScrollView嵌套ListView導(dǎo)致滑動(dòng)顯示不完全問題

發(fā)布時(shí)間:2020-06-22 13:40:24 來源:網(wǎng)絡(luò) 閱讀:1248 作者:671076656 欄目:開發(fā)技術(shù)


在ListView初始化后setAdapter后面調(diào)用此方法

/**
 * 重新計(jì)算ListView的高度,解決ScrollView和ListView兩個(gè)View都有滾動(dòng)的效果,在嵌套使用時(shí)起沖突的問題
 * @param listView
 */
public void setListViewHeight(ListView listView) {  
// 獲取ListView對(duì)應(yīng)的Adapter  
    ListAdapter listAdapter = listView.getAdapter();  
    if (listAdapter == null) {  
        return;  
    }  
    
    int totalHeight = 0;  
    for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount            ()返回?cái)?shù)據(jù)項(xiàng)的數(shù)目  
        View listItem = listAdapter.getView(i, null, listView);  
        listItem.measure(0, 0); // 計(jì)算子項(xiàng)View 的寬高  
        totalHeight += listItem.getMeasuredHeight(); // 統(tǒng)計(jì)所有子項(xiàng)的總高度  
    }  
    
        ViewGroup.LayoutParams params = listView.getLayoutParams();  
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCoun    t() - 1));  
        
    listView.setLayoutParams(params);  
    }



ScrollView下嵌套的ListView用LinearLayout包裹住,如果還有其他的控件同樣要用LinearLayout包裹起來

也就是說ScrollView下可以嵌套多個(gè)LinearLayout,并且可以滑動(dòng)


另外在引用的R.layout.item里必須要用LinearLayout不能用類似RelativeLayout方法,因?yàn)椴粫?huì)重新measure方法。















向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI