ListView解決巢狀衝突3種辦法

2021-07-12 07:12:03 字數 1192 閱讀 3304

注:listview子項item中注意強搶焦點問題:

如果item子項是乙個控制項,設定控制項的乙個屬性 android:focusable="false",

如果是布局的話,就在跟布局設定 android:descendantfocusability="blocksdescendants"

當時我自己的item中存在button  我在其屬性加入android:clickable="false",android:focusable="false", android:focusableintouchmode="false"

三條屬性

方法一:

在listview新增頭部  ,這是最好的解決辦法   資料載入量大的時候可以防止記憶體洩漏

oncreateview()方法裡載入頭部布局

head_listview布局是自己加入的布局

view v=inflater.inflate(r.layout.head_listview, null);

listv_dh_activitis.addheaderview(v);

主布局只需要加入

方法二:

自定義listview,重寫onmeasure()方法寫上下面的**

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

方法三: 需要計算listview每個item的高

public static void setlistviewheight(listview listviewli) 

// 設定高度

viewgroup.layoutparams params = listviewli.getlayoutparams();

// item的高度加上分割線的高度的和乘以總個數

params.height = height + ((listviewli.getdividerheight()) * (adapter.getcount() - 1));

listviewli.setlayoutparams(params);

}

然後用listview方法呼叫即可

解決ListView巢狀ListView遇到的問題

listview巢狀會造成的問題主要是子listview的高度錯誤導致內容不能正常顯示完,解決這個問題,我個人第乙個想法就是重新計算子listview的高度,如下 private void setlistviewheightbasedonchildren listview listview int ...

解決ListView巢狀ScrollView的問題

當scrollview裡面包含listview時,listview只能顯示第一行資料.所以需要解決的也就是高度問題了 需要自定義,重寫onmeasure方法,改變測量的高度就行了class mylistview extends listview 使得listview適應scrollview的效果 o...

ListView巢狀listView問題

listview巢狀listview 外層的listview是原生的,裡面的是自定義的mylistview 1.如果兩層都是listview,出現問題 裡層的listview只會顯示一條資料 2.如果外層mylistview,裡層listview 出現問題 導致只能顯示一屏資料,而且裡層的listv...