如何滚动到长滚动视图布局的顶部?

对于我的应用程序的一部分,用户会看到一个名称列表,并被要求按照他们认为合适的方式进行分组。

(请注意,ListView代码是从Android Views教程逐字拷贝的,我还没有根据自己的需求进行定制,我只是想弄清楚如何完成这项工作。)

基本布局是一个LinearLayout,包含一个ScrollView(在下面的代码中称为“groupsScrollView”),包含一个RelativeLayout。 我有一些按钮和文本,然后是我的ListView,它显示名称列表。 所有这些都高于可见屏幕区域,因此用户可以垂直滚动查看全部内容。

这一切都很精美,除非页面加载时总是预先滚动到页面中间的ListView顶部。 我创建的文本和按钮告诉用户该做什么不可见。

我可以抓住屏幕并向上滚动,这很好,但我希望屏幕加载已经滚动到顶部。 用户不需要向上滚动即可查看新加载页面的顶部。 但是,我尝试以编程方式滚动到屏幕顶部的所有内容都失败了。

这是我的onCreate方法:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.groups);

    mainScrollView = (ScrollView)findViewById(R.id.groupsScrollView);

    //get the Bundle out of the Intent...
    Bundle extras = getIntent().getExtras();
    mNames = extras.getStringArray("mNames");

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, mNames));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    //This is the line I'm having issues with
    mainScrollView.pageScroll(View.FOCUS_UP);

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_SHORT).show();
        }
      });
}

“mainScrollView.pageScroll(View.FOCUS_UP)”这一行是问题所在,它不会导致错误,但它似乎没有做任何事情。我试过scrollTo(0,0),scrollDirection(View.FOCUS_UP )以及我能想到的其他一切。

由于我没有收到错误,我必须假定这些滚动命令实际上是工作的,但它们滚动到ListView的顶部,而不是ScrollView或包含它的RelativeLayout的顶部。 这似乎得到了谷歌自己对scrollTo(int x,int y)方法的描述的确认,他们在这里说“这个版本也限制了滚动到我们孩子的边界。”。

因此,为了长时间地提出一个长问题,我如何在ScrollView中包含的屏幕上加载一些视图,然后以编程方式将整个视图滚动到页面的顶部,以便用户可以与它进行交互?

谢谢!


尝试

mainScrollView.fullScroll(ScrollView.FOCUS_UP);

它应该工作。


有同样的问题,可能是某种错误。

即使是来自其他答案的fullScroll(ScrollView.FOCUS_UP)也不起作用。
只有在我显示对话框后立即调用scroll_view.smoothScrollTo(0,0)


我有同样的问题,这解决了它。 希望它可以帮助你。

listView.setFocusable(false);
链接地址: http://www.djcxy.com/p/78295.html

上一篇: How to scroll to top of long ScrollView layout?

下一篇: HorizontalScrollView within ScrollView Touch Handling