(请注意,ListView 代码是从 Android 视图教程中直接复制的。我还没有根据我的需求自定义它,我只是在尝试弄清楚如何使其工作。)
基本布局是一个 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的顶部。Google关于"scrollTo(int x,int y)"方法的描述似乎证实了这一点,其中他们说:“此版本还将滚动限制在我们的子级边界内。”
因此,长话短说,我该如何在屏幕上加载一堆视图,这些视图包含在ScrollView中,然后通过编程方式将整个视图滚动到页面顶部,以便用户可以与之交互?
谢谢!