Для части моего приложения пользователю представлен список имен и предлагается сгруппировать их по своему усмотрению.
(Обратите внимание, что код ListView был скопирован дословно из учебника Android Views. Я еще не настроил его на свои нужды, я просто пытаюсь выяснить, как это сделать.)
Основной макет - LinearLayout, содержащий ScrollView (называемый "groupsScrollView" в коде ниже), содержащий RelativeLayout. У меня есть несколько кнопок и текст, а затем мой ListView под ним, который отображает список имен. Все это выше, чем видимая область экрана, поэтому пользователю разрешено прокручивать вертикально, чтобы увидеть все это.
Все это прекрасно работает, кроме случаев, когда страница загружается, она всегда предварительно прокручивается вверху моего ListView - в середине страницы. Текст и кнопки, которые я создал, которые говорят пользователю, что делать, не видны.
Я могу захватить экран и прокручивать вверх, это работает отлично, но я бы хотел, чтобы экран загружался уже прокручиваемым вверх. Пользователю не нужно прокручивать UP, чтобы увидеть верхнюю часть только что загруженной страницы. Но все, что я пытался программно прокрутить до верхней части экрана, не удалось.
Здесь мой метод 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, а не вверху ScrollView или RelativeLayout, которые его содержат. Это, похоже, подтверждается собственным описанием Google метода scrollTo (int x, int y), где они говорят: "Эта версия также зажимает прокрутку до границ нашего ребенка".
Итак, чтобы сделать длинный вопрос еще дольше, как мне загрузить кучу просмотров на экране, содержащемся в ScrollView, а затем программно прокрутить все это до верхней части страницы, чтобы пользователь мог взаимодействовать с ним?
Спасибо!