ScroyView嵌套listview

? ? ? ?在項(xiàng)目中經(jīng)常會用到ScrollView嵌套ListView的情況堤器。如果使用原生的ListView會出現(xiàn)只顯示一行的情況,出現(xiàn)這個的原因是在scrollView中ListView在OnMeasure階段無法測出實(shí)際的高度。

1墩虹、第一種方法

????我們需要給他設(shè)置AT_MOST模式以支持很大的高度反惕。這時候可以自定義一個MyListView 繼承自Listview,然后重寫onMeasure方法即可:

/**

* Created by tangzejian on 2018/3/27.

* ScrollView嵌套ListView

*/

public class ScrollViewListViewextends ListView {

public ScrollViewListView(Context context) {

super(context);

? ? }

public ScrollViewListView(Context context, AttributeSet attrs) {

super(context, attrs);

? ? }

public ScrollViewListView(Context context, AttributeSet attrs,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int defStyle) {

super(context, attrs, defStyle);

? ? }

/**

* 重寫該方法稻励,達(dá)到使ListView適應(yīng)ScrollView的效果

*/

? ? @Override

? ? protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2,

? ? ? ? ? ? ? ? MeasureSpec.AT_MOST);

? ? ? ? super.onMeasure(widthMeasureSpec, expandSpec);

? ? }

}

2、第二種方法

????動態(tài)設(shè)置ListView的高度:

public void setListViewHeightBasedOnChildren(ListView listView) {

// 獲取ListView對應(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()返回數(shù)據(jù)項(xiàng)的數(shù)目

? ? ? ? View listItem = listAdapter.getView(i, null, listView);

? ? ? ? // 計算子項(xiàng)View 的寬高

? ? ? ? listItem.measure(0, 0);

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

? ? ? ? totalHeight += listItem.getMeasuredHeight();

? ? }

ViewGroup.LayoutParams params = listView.getLayoutParams();

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

? ? // listView.getDividerHeight()獲取子項(xiàng)間分隔符占用的高度

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

? ? listView.setLayoutParams(params);

}

以上兩種方法都可以解決ListView的Item顯示不全問題。

ps:如果使用第一種方法還會遇到一個小問題問題望抽,ListView加載完后ScroyView或滑動到ListView的位置加矛,這時候可以自定義一個MyScroyView 繼承自ScroyView,然后重寫computeScrollDeltaToGetChildRectOnScreen方法即可:

/**

* Created by tangzejian on 2018/4/11.

* 禁止加載數(shù)據(jù)時滑到底部

*/

public class MyScrollViewextends ScrollView {

public MyScrollView(Context context) {

super(context);

? ? }

public MyScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

? ? }

public MyScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

? ? }

/**

? ? * @param rect 解決

? ? * @return 由于子控件的大小導(dǎo)致ScrollView滾動到底部的問題

*/

? ? @Override

? ? protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {

return 0;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末煤篙,一起剝皮案震驚了整個濱河市斟览,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辑奈,老刑警劉巖苛茂,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鸠窗,居然都是意外死亡妓羊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門稍计,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躁绸,“玉大人,你說我怎么就攤上這事臣嚣【还危” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵硅则,是天一觀的道長淹父。 經(jīng)常有香客問我,道長怎虫,這世上最難降的妖魔是什么暑认? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮大审,結(jié)果婚禮上穷吮,老公的妹妹穿的比我還像新娘。我一直安慰自己饥努,他們只是感情好捡鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酷愧,像睡著了一般驾诈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溶浴,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天乍迄,我揣著相機(jī)與錄音,去河邊找鬼士败。 笑死闯两,一個胖子當(dāng)著我的面吹牛褥伴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漾狼,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼重慢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逊躁?” 一聲冷哼從身側(cè)響起似踱,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稽煤,沒想到半個月后核芽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酵熙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年轧简,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匾二。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡哮独,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出假勿,到底是詐尸還是另有隱情,我是刑警寧澤态鳖,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布转培,位于F島的核電站,受9級特大地震影響浆竭,放射性物質(zhì)發(fā)生泄漏浸须。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一邦泄、第九天 我趴在偏房一處隱蔽的房頂上張望删窒。 院中可真熱鬧,春花似錦顺囊、人聲如沸肌索。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诚亚。三九已至,卻和暖如春午乓,著一層夾襖步出監(jiān)牢的瞬間站宗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工益愈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梢灭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像敏释,于是被迫代替她去往敵國和親库快。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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