Полоса прокрутки не прокручивается при использовании динамически заполненного списка - PullRequest
0 голосов
/ 13 декабря 2011

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

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

Атрибутами scrollview являются

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="10dp"
    android:layout_weight="0.6"
    android:fillViewport="true"
    android:orientation="vertical"
    android:padding="6.0dip"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:scrollbarFadeDuration="5000"
    android:scrollbarSize="20dp"
    android:scrollbarStyle="insideOverlay"
    android:scrollbars="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="2dp" >

        <ListView
            android:id="@+id/listbox_list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="599.84"
            android:minHeight="250dp" >
        </ListView>

    </LinearLayout>

</ScrollView>

Пожалуйста, помогите мне в ближайшее время

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

, просто взглянув на layout_width и layout_height ваших элементов, становится ясно, что ваше представление прокрутки не будет прокручиваться. если у вас нет просмотра списка с фиксированной высотой, никогда не помещайте представление списка в представление прокрутки (или в этом случае представление списка внутри макета, который находится внутри представления прокрутки).

0 голосов
/ 13 декабря 2011

Добавьте следующее в линейный макет

android: scrollbars = "вертикальный" android: scrollbarAlwaysDrawVerticalTrack = "true"

0 голосов
/ 13 декабря 2011

У меня нет ссылок, чтобы подтвердить это прямо сейчас, но это невозможно, и это хорошо известная «проблема». Если вы немного погуглите или поищете здесь на SO, вы найдете ряд тем, посвященных этой теме.

Проблема возникает в большинстве случаев, когда у вас есть вид с прокруткой внутри другого вида с прокруткой в ​​том же направлении. Рассмотрим следующий пример:

  • У вас есть два списка внутри ScrollView.
  • Оба списка ровно на один экран.

Как прокрутить вниз до второго списка?
При прокрутке как ваш макет узнает, прокручиваете ли вы список или контейнер?
Это в основном вопрос, который является причиной, и единственным официальным решением является то, что это так, как должно быть, и не будет никакого решения. Обычно достаточно иметь ListView или ScrollView, но я сталкивался со случаями, когда у вас должно быть представление списка в виде прокрутки (в моем случае клиенту нужен был похожий на iPhone указатель даты на странице прокрутки) .
Я решил это с помощью FrameLayout, содержащего пользовательский ScrollView и ListView поверх этого. Затем в коде для пользовательского ScrollView я добавил строку в метод onScroll, который обновил верхнее поле ListView, чтобы увеличить или уменьшить его по мере прокрутки пользователем. Удивительно, но это сработало.

ПРИМЕЧАНИЕ: помните, что:

  • ListView обрабатывает собственную прокрутку. Если все, что вам нужно, это прокрутка список, вам не нужно ScrollView.
  • Если вам нужен макет со списком и местом для кнопок или других рассмотрите возможность создания макета так, чтобы список покрывал только достаточно места для вас, чтобы соответствовать другим вашим представлениям ниже / выше без скроллинг.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...