初次进入页面ScrollView的滚动条不在顶部的解决办法

  • Post author:
  • Post category:其他


当加载数据完成后,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 版权协议,转载请附上原文出处链接和本声明。