У частині мого додатку користувачеві подається список імен і його просять згрупувати їх, як вони вважають за потрібне.
(Зауважте, код ListView був скопійований дослівно з підручника Android Views. Я ще не налаштував його на мої потреби, я просто намагаюся з’ясувати, як зробити цю роботу.)
Основний макет - це 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); є проблемою. Це не викликає помилок, але, здається, нічого не робить. Я спробував прокручуватиTo (0,0), scrollDirection (View.FOCUS_UP ), і все інше, про що я можу придумати.
Оскільки я не отримую помилку, я повинен припустити, що ці команди прокрутки дійсно працюють, але що вони прокручуються до вершини ListView, а не до вершини ScrollView або RelativeLayout, яка їх містить. Це, мабуть, підтверджується власним описом методу scrollTo (int x, int y), де вони говорять: "Ця версія також затискає прокрутку до меж нашої дитини".
Отже, щоб ще довше поставити запитання, як я завантажую купу переглядів на екран, що міститься в ScrollView, а потім програматично прокручувати все до початку сторінки, щоб користувач міг взаємодіяти з ним?
Дякую!