Đối với một phần của ứng dụng của tôi, người dùng được cung cấp một danh sách các tên và được yêu cầu nhóm chúng khi chúng thấy phù hợp.
(Lưu ý, mã ListView đã được sao chép nguyên văn từ hướng dẫn Chế độ xem Android. Tôi chưa tùy chỉnh nó theo nhu cầu của mình, tôi chỉ đang cố gắng tìm ra cách để thực hiện công việc này.)
Bố cục cơ bản là một linearLayout, chứa ScrollView (được gọi là "GroupsScrollView" trong mã bên dưới), chứa RelativeLayout. Tôi có một số nút và văn bản, và sau đó ListView của tôi bên dưới đó, hiển thị danh sách các tên. Tất cả điều này cao hơn khu vực màn hình có thể nhìn thấy, vì vậy người dùng được phép cuộn theo chiều dọc để xem tất cả.
Tất cả đều hoạt động tốt, ngoại trừ khi trang tải, nó luôn được cuộn trước lên đầu ListView của tôi - ở giữa trang. Văn bản và các nút tôi đã tạo cho người dùng biết những gì cần làm không thể nhìn thấy.
Tôi có thể lấy màn hình và cuộn lên, nó hoạt động rất tốt, nhưng tôi muốn màn hình tải đã được cuộn lên trên cùng. Người dùng không cần phải cuộn LÊN để xem đầu trang mới tải. Nhưng tất cả mọi thứ tôi đã cố gắng để lập trình cuộn lên trên cùng của màn hình đã thất bại.
Đây là phương pháp onCreate của tôi:
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();
}
});
}
Dòng "mainScrollView.pageScroll (View.FOCUS_UP); là sự cố. Nó không gây ra lỗi, nhưng dường như không làm gì cả. Tôi đã thử scrollTo (0,0), scrollDirection (View.FOCUS_UP ), và mọi thứ khác tôi có thể nghĩ ra.
Vì tôi không gặp lỗi nên tôi phải giả sử rằng các lệnh cuộn này đang thực sự hoạt động, nhưng chúng đang cuộn lên phía trên ListView, thay vì trên cùng của ScrollView hoặc RelativeLayout có chứa nó. Điều này dường như được xác nhận bằng mô tả riêng của Google về phương thức scrollTo (int x, int y) trong đó họ nói "Phiên bản này cũng kẹp việc cuộn vào giới hạn của con chúng tôi.".
Vì vậy, để đặt câu hỏi dài hơn nữa, làm cách nào để tôi tải một loạt lượt xem trên màn hình có trong ScrollView và sau đó lập trình cuộn toàn bộ nội dung lên đầu trang để người dùng có thể tương tác với nó?
Cảm ơn!