ScrollView嵌套下ListView或ExpandableListView的高度自適應(yīng)

發(fā)現(xiàn)問題

最近因為項目需要使用ScrollView來嵌套ListView和ExpandableListView,在開發(fā)過程中發(fā)現(xiàn)残拐,顯示的時候ListView不能完全正確的顯示,一種做法就是使ListView高度自適應(yīng)骆撇。

ScrollView嵌套ListView

/*

* 動態(tài)設(shè)置ListView高度

* @param listView

* @param adapter listView 的適配器

* */

public void setListHeight(ListView listView, Adapter adapter) {

if (adapter == null) {

return;

}

int totalHeight = 0;

/* adapter.getCount()返回數(shù)據(jù)項的數(shù)目*/

for (int i = 0; i < adapter.getCount(); i++) {

View itemView = adapter.getView(i, null, listView);

// 計算子項View 的寬高

itemView.measure(View.MeasureSpec.UNSPECIFIED , View.MeasureSpec.UNSPECIFIED);

// 統(tǒng)計所有子項的總高度

totalHeight += itemView.getMeasuredHeight();

}

/*

* listView.getDividerHeight()獲取子項間分隔符占用的高度

* params.height最后得到整個ListView完整顯示需要的高度

* */

ViewGroup.LayoutParams params = listView.getLayoutParams();

params.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));

listView.setLayoutParams(params);

}

ScrollView嵌套ExpandableListView

ExpandableListView呈現(xiàn)的效果類似QQ的好友分組

// ExpandListView 列表狀態(tài) 1展開 0關(guān)閉 該案例中設(shè)置為三級

int[] isExpand = new int[] { 0, 0, 0 };

// 通過監(jiān)聽展開和關(guān)閉事件動態(tài)設(shè)置高度

listView.setOnGroupExpandListener(new OnGroupExpandListener() {

@Override

public void onGroupExpand(int groupPosition) {

isExpand[groupPosition] = 1;

setListHeight(listView, listAdapter);

}

});

listView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

@Override

public void onGroupCollapse(int groupPosition) {

isExpand[groupPosition] = 0;

setListHeight(listView, listAdapter);

}

});

/*

* ExpandListView自適應(yīng)高度 根據(jù)子項數(shù)量

* @param listView

* @param listAdapter listView 的適配器

* */

public void setListHeight(ExpandableListView listView, Adapter listAdapter) {

if (listAdapter == null) {

return;

}

int totalHeight = 0;

int total = 0;

View listItem;

for (int i = 0; i < listAdapter.getGroupCount(); i++) {

listItem = listAdapter.getGroupView(i, false, null, listView);

listItem.measure(0, 0);

totalHeight += listItem.getMeasuredHeight();

total += (listAdapter.getChildrenCount(0) - 1);

}

for(int i = 0; i < isExpand.lenght ; i++) {

if (isExpand[i] == 1)

for (int j = 0; j < listAdapter.getChildrenCount(i); j++) {

listItem = listAdapter.getChildView(i, j, false, null, listView);

listItem.measure(0, 0);

totalHeight += listItem.getMeasuredHeight();

total += (listAdapter.getChildrenCount(i) - 1);

}

}

ViewGroup.LayoutParams params = listView.getLayoutParams();

params.height = totalHeight + (listView.getDividerHeight() * total);

listView.setLayoutParams(params);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辣恋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杆兵,更是在濱河造成了極大的恐慌雁仲,老刑警劉巖仔夺,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異攒砖,居然都是意外死亡缸兔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門吹艇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惰蜜,“玉大人,你說我怎么就攤上這事受神∨撞” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵鼻听,是天一觀的道長财著。 經(jīng)常有香客問我,道長撑碴,這世上最難降的妖魔是什么撑教? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮醉拓,結(jié)果婚禮上伟姐,老公的妹妹穿的比我還像新娘。我一直安慰自己亿卤,他們只是感情好愤兵,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著排吴,像睡著了一般秆乳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上傍念,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天矫夷,我揣著相機與錄音,去河邊找鬼憋槐。 笑死双藕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的阳仔。 我是一名探鬼主播忧陪,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼扣泊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嘶摊?” 一聲冷哼從身側(cè)響起延蟹,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叶堆,沒想到半個月后阱飘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡虱颗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年沥匈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忘渔。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡高帖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畦粮,到底是詐尸還是另有隱情散址,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布宣赔,位于F島的核電站预麸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拉背。R本人自食惡果不足惜师崎,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椅棺。 院中可真熱鬧犁罩,春花似錦、人聲如沸两疚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诱渤。三九已至丐巫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勺美,已是汗流浹背递胧。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赡茸,地道東北人缎脾。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像占卧,于是被迫代替她去往敵國和親遗菠。 傳聞我的和親對象是個殘疾皇子联喘,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容