文章參考:
scrollview是常用的滑動顯示內容的控制項,有時為了適應設計需求裡面會包含諸多態別的內容控制項,比如textview、imageview、listview等混合使用;而在使用listview時,最後執行往往發現listview只顯示一行,listview中所有的item只能在乙個item高度下顯示,效果很差。
究其原因是因為:原本listview的高度是設定adapter之後去自適應高度的(不放在scrollview裡面的話listview會縱向平鋪),但是放在scrollview之後scrollview需要測量裡面所有子控制項的高度並設定,但是這一步是布局資源的操作,沒有考慮listview通過adapter載入多少條資料,因此預設認為listview裡面只有一條內容,所以造成了此問題。
解決方法:listview設定adapter之後,根據載入的資料條數手動設定listview的高度(一般在xml檔案中listview高度都是設定為wrap_content),這時候scrollview就不得不重新測量而擴大高度了。
ps. 當然,若scrollview裡只有listview的話就沒必要用scrollview了,listview自帶滑動。
**如下:
public
class
mainactivity
extends
activity ;
listview.setadapter(new arrayadapter(this,android.r.layout.******_list_item_1,adapterdata));
setlistviewheightbasedonchildren(listview);
}
public
void
setlistviewheightbasedonchildren(listview listview)
int totalheight = 0;
for (int i = 0, len = listadapter.getcount(); i < len; i++)
viewgroup.layoutparams params = listview.getlayoutparams();
params.height = totalheight+ (listview.getdividerheight() * (listadapter.getcount() - 1));
// listview.getdividerheight()獲取子項間分隔符占用的高度
// params.height最後得到整個listview完整顯示需要的高度
listview.setlayoutparams(params);
}
}
另一種解決方法就是自定義listview控制項,重寫它的onmeasure方法就可以了
**如下:
public
class
mylistview
extends
listview
public
mylistview(android.content.context context,android.util.attributeset attrs)
@override
public
void
onmeasure(int widthmeasurespec, int heightmeasurespec)
}
在ListView中巢狀ListView的事件處理
前天在工作中遇到在listview中的item需要用listview來展現處理後的內容,然後就遇到了乙個很頭疼的問題,作為item的listview沒法進行滑動,而且顯示也不正常,只是顯示幾個子item。不能將子item全部顯示,原因是在控制項繪製出來之前要對listview的大小進行計算,要解決將...
游標查詢scroll
scroll查詢 可以用來對 elasticsearch 有效地執行大批量的文件查詢,而又不用付出深度分頁那種代價。游標查詢允許我們 先做查詢初始化,然後再批量地拉取結果。這有點兒像傳統資料庫中的 cursor 游標查詢會取某個時間點的快照資料。查詢初始化之後索引上的任何變化會被它忽略。它通過儲存舊...
scroll事件詳解
以前眼高手低,不夠紮實,面試的時候總是處理過,卻想不出來細節,這次開始慢慢整理,蝸牛繼續爬坡 一般情況下,如果出現內容大於瀏覽器的時候,需要新增樣式 overflow scroll 關於scroll的樣式有以下可以根據需求調整 滾動條的設定 1.webkit scrollbar 滾動條整體部分,可以...