描述:
Scrollview里面嵌套了一個(gè)listview 胖腾,遇到的問題是:在這個(gè)Scrollview頁面默認(rèn)的起始位置不是最頂部。
原因:
1,在Activity計(jì)算窗口的高度時(shí)瘪松,是在listview沒有填充數(shù)據(jù)時(shí)候就完成的瓶逃,由于ScrollView嵌套listview時(shí)沒有指定高度孕暇,所以ScrollView就會(huì)按照layout中定義的默認(rèn)高度計(jì)算。
2, 因?yàn)閘istview獲取了焦點(diǎn)。
解決:
- myScrollView.smoothScrollTo(0,0);
需在listview數(shù)據(jù)加載完成后調(diào)用或
mScroll.post(new Runnable() {
@Override
public void run() {
mScroll.smoothScrollTo(0,0);
}
});
- 在代碼里去掉listview的焦點(diǎn)
lv.setFocusable(false);
Listview外套一層LinearLayout
跟EditText一樣会通,在父元素的屬性下面下下面這兩行即可
android:focusableInTouchMode=”true”
android:focusable=”true”
- 最開始的時(shí)候讓最上面其中一個(gè)控件獲得焦點(diǎn)烟勋,滾動(dòng)條自然就到頂部去了席爽,如下:
txtBaseMsg.setFocusable(true);
txtBaseMsg.setFocusableInTouchMode(true);
txtBaseMsg.requestFocus();