Untuk bagian dari aplikasi saya, pengguna disajikan dengan daftar nama dan diminta untuk mengelompokkannya sesuai keinginan mereka.
(Catatan, kode ListView disalin kata demi kata dari tutorial Android Views. Saya belum menyesuaikannya dengan kebutuhan saya, saya hanya mencoba mencari cara untuk membuat ini berfungsi.)
Layout dasar adalah LinearLayout, yang berisi ScrollView (disebut "groupsScrollView" dalam kode di bawah), yang berisi RelativeLayout. Saya memiliki beberapa tombol dan teks, dan kemudian ListView saya di bawahnya, yang menampilkan daftar nama. Semua ini lebih tinggi daripada area layar yang terlihat, sehingga pengguna diizinkan untuk menggulir secara vertikal untuk melihat semuanya.
Ini semua bekerja dengan indah, kecuali ketika halaman memuatnya selalu pra-gulir ke bagian atas ListView saya - di tengah halaman. Teks dan tombol yang saya buat yang memberi tahu pengguna apa yang harus dilakukan tidak terlihat.
Saya dapat mengambil layar dan menggulir ke atas, yang berfungsi dengan baik, tapi saya ingin layar memuat yang sudah digulir ke atas. Pengguna tidak perlu menggulir ke atas untuk melihat bagian atas halaman yang baru dimuat. Tetapi semua yang saya coba gulir secara terprogram ke bagian atas layar gagal.
Inilah metode onCreate saya:
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();
}
});
}
Baris "mainScrollView.pageScroll (View.FOCUS_UP); adalah masalahnya. Itu tidak menyebabkan kesalahan, tetapi sepertinya tidak melakukan apa-apa. Saya sudah mencoba scrollTo (0,0), scrollDirection (View.FOCUS_UP ), dan segala sesuatu yang dapat saya pikirkan.
Karena saya tidak mendapatkan kesalahan, saya harus berasumsi bahwa perintah-perintah gulir ini benar-benar berfungsi, tetapi mereka menggulir ke bagian atas ListView, daripada bagian atas ScrollView atau RelativeLayout yang berisi itu. Ini tampaknya dikonfirmasi oleh deskripsi Google sendiri tentang metode scrollTo (int x, int y) di mana mereka mengatakan "Versi ini juga menjepit pengguliran ke batas-batas anak kita.".
Jadi untuk membuat pertanyaan panjang lebih lama, bagaimana cara memuat banyak tampilan di layar yang terdapat di dalam ScrollView, dan kemudian secara program gulir semuanya ke bagian atas halaman sehingga pengguna dapat berinteraksi dengannya?
Terima kasih!