ScrollView не прокручивается вообще

Я не могу правильно прокручивать ScrollView. Он всегда отсекает содержимое внизу, как если бы это был обычный LinearLayout.

Мой код

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > <LinearLayout android:id="@+id/scroll_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:isScrollContainer="true" android:orientation="vertical" > 

Конечно, я уже пытался добавить / удалить свойства «fillViewport» и «isScrollContainer», и он ничего не изменил.

Заранее спасибо.

Ответ: ScrollView не работает при использовании в качестве корневого элемента XML-макета. Он должен быть завернут внутри LinearLayout.

Тогда решение:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > <LinearLayout android:id="@+id/scroll_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > 

Удалите android:isScrollContainer в LinearLayout . В соответствии с документацией android:isScrollContainer используется для установки прокручиваемого представления. Надеюсь, это поможет вам. См. Эту ссылку для определения.

Android Studio добавляет NestedScrollView в файл активности некоторых своих шаблонов (например, Master-Detail). Наличие ScrollView в файле фрагмента, а другое в файле активности этого фрагмента предотвращает работу прокрутки. Удаление ScrollView в моем файле фрагмента и оставление его в файле активности решило проблему для меня.

Попробуйте это решение, просто задержите свой свиток, используя метод post delayed.

fragment_test.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rootRelativeLayout" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:fresco="http://schemas.android.com/apk/res-auto"> <ScrollView android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="40dp" android:fillViewport="true" android:scrollbars="none"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> ... </RelativeLayout> </ScrollView> </RelativeLayout> 

TestFragment.java

 ... private ScrollView mScrollView; ... mScrollView = (ScrollView) mView.findViewById(R.id.scrollView); mScrollView.setSmoothScrollingEnabled(true); ... new Handler().postDelayed(new Runnable() { @Override public void run() { if(isAdded()) { // Scroll 1000px down mScrollView.smoothScrollTo(0, 1000); } } }, 150); 

Это сработало для меня, надеюсь, это поможет.

Это исправило мою проблему: я добавил android:isScrollContainer="true" в LinearLayout и удалил код ScrollView Before:

  <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:id="@+id/scrollViewRecords" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <LinearLayout android:id="@+id/sheepList" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </ScrollView> </LinearLayout> 

Код после

  <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:isScrollContainer="true"> <LinearLayout android:id="@+id/sheepList" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> </LinearLayout>