对于我的部分应用,会向用户显示一个名称列表,并要求他们按照自己的意愿对其进行分组.
(注意,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();
}
}); …Run Code Online (Sandbox Code Playgroud)