(Обратите внимание, код 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(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();
}
});
}
Поскольку я не получаю ошибки, у меня есть. предположить, что эти команды прокрутки на самом деле работают, но они прокручиваются до верхней части ListView, а не до верхней части ScrollView или RelativeLayout, которые его содержат. Кажется, это подтверждается собственным описанием метода ScrollTo(int x, int y) Google, где они работают. скажите: «Эта версия также ограничивает прокрутку до границ нашего дочернего элемента».
Итак, чтобы сделать длинный вопрос еще длиннее, как мне загрузить кучу просмотров? экран, содержащийся в ScrollView, а затем программно прокрутить все это до верха страницы, чтобы пользователь мог с ней взаимодействовать?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/411 ... iew-layout