對於我的應用程序的一部分,用戶會看到一個名稱列表,並要求他們按照他們認爲合適的方式進行分組。如何滾動到長滾動視圖佈局的頂部?
(注意,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的頂部,而不是滾動視圖或包含它的RelativeLayout的頂部,這似乎得到了谷歌自己對滾動的描述的證實To(int x,int y)方法,他們說:「這個版本也會限制滾動到我們孩子的範圍。」
因此,爲了使長問題更長,我如何在ScrollView中包含的屏幕上加載一堆視圖,然後以編程方式將整個事物滾動到頁面的頂部,以便用戶可以與它進行交互?
謝謝!
這爲我工作。謝謝 – Shafi 2014-07-14 11:52:52
適用於我也。 :D – 2017-10-26 09:26:41