ListView in Scroll View Мой просмотр прокрутки перемещается в начало списка. Как мне предотвратить это? - PullRequest
7 голосов
/ 22 февраля 2012

У меня есть представление списка в моем представлении прокрутки под почти прокручиваемой страницей до этого, но как только мой список просмотра заполняется, представление прокрутки перемещается к вершине представления списка.как я могу это исправить / предотвратить это?

ПРОСМОТР ПРОКРУТКИ XML:

<ScrollView
    android:id="@+id/tvscrollview"
    android:layout_marginTop="8.0dip" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <include 
            layout="@layout/a" />

        <include 
            layout="@layout/b" />

        <include 
            layout="@layout/c" />

        <include 
            layout="@layout/d" />


<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

    </LinearLayout>
</ScrollView>

Я пытался выполнить sv.fullScroll (ScrollView.FOCUS_UP);и все такое в моем просмотре прокрутки, но это не работает

Ответы [ 13 ]

0 голосов
/ 27 марта 2016

Хотя это очень поздний ответ на этот вопрос, и этот ответ уже получил приемлемый ответ, я подумал, что указание того, как я решил мою проблему здесь, может помочь другим найти все, что связано с этой проблемой, в одном SO-потоке.

Итак, вот моя ситуация: у меня был ScrollView с ListView в конце макета. Я знаю, что это очень плохая практика. Я мог добиться того же поведения, которое хотел, прикрепив заголовок к ListView. Но в любом случае, мой ListView получил фокус, когда он был заполнен данными, и страница автоматически прокручивалась до самого дна, где начинался ListView.

Я пытался с принятым ответом здесь, но он не работал для меня. Я попытался использовать манекен EditText в верхней части макета, чтобы он мог автоматически запрашивать фокус, но он также не работал. Потому что ListView получил фокус после загрузки данных из вызова API REST.

Тогда я нашел этот ответ , и это действительно помогло. Поэтому я подумал об этом, чтобы другие могли получить помощь от одного потока, имеющего ту же проблему, что и я.

mainScrollView.fullScroll(ScrollView.FOCUS_UP); у меня тоже не сработало, так как список был заполнен после заполнения других представлений. Поэтому мне пришлось прокрутить ScrollView наверх после заполнения ListView. Вот как я решил свою проблему.

mScrollView.setEnabled(false);
mIntroducerListView.setFocusable(false);
mListAdapter.notifyDataSetChanged();

// Force scroll to the top of the scroll view.
// Because, when the list view gets loaded it focuses the list view
// automatically at the bottom of this page.
mScrollView.smoothScrollTo(0, 0);
0 голосов
/ 19 декабря 2015

У меня была та же проблема, что я нашел решение, изменив видимость представления списка в XML после установки адаптера. Я изменил видимость на видимый

listView.setAdapter(adapter);
listView.setVisibility(View.VISIBLE);
0 голосов
/ 01 сентября 2015

Единственное решение, которое мне помогло, - это добавить EditText в качестве первого потомка макета. Гадкий, я знаю.

<EditText
  android:layout_width="0dp"
  android:layout_height="0dp" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...