当加载数据完成后,ScrollView的内容会很多,滚动条会滚动,这样会ScrollView的第一个Child显示不全,这样造成不好的用户体验,
此时有两个解决办法:
(1) 加载数据完成后,延时设置ScrollView的滚动条位置:
private void onFinishLoadReport(String response)
{
....
adjustScrollSavingDelayed(100);
}
protected void adjustScrollSavingDelayed(long delayMillis)
{
if(adjustHandler != null)
{
adjustHandler.sendEmptyMessageDelayed(0, delayMillis);
}
}
adjustHandler = new Handler(){
@Override
public void handleMessage(Message msg)
{
if(nslSaving != null)
{
nslSaving.smoothScrollTo(0, 0);
//nslSaving.scrollTo(0, 0);
}
}
};
以上使用nslSaving.smoothScrollTo(0, 0) 或 nslSaving.scrollTo(0, 0)都能使滚动条在顶部,但是使用nslSaving.scrollTo(0, 0) 滚动的效果会很突然,
所以就使用了nslSaving.smoothScrollTo(0, 0) 平滑滚动。
(2) 对ScrollView中的第一个Child获取焦点
rlSavingLabel.setFocusable(true);
rlSavingLabel.setFocusableInTouchMode(true);
rlSavingLabel.requestFocus();
以上两种方法,其中方法2 是最简单的也是效果最好的(没有方法1中的滚动效果,滚动条没有滚动),两种方法都已验证 OK
版权声明:本文为lue2009原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。