2016-05-13 1 views
6

я реализую NonSwipeableViewPager с фрагментом имеет NestedScrollView так, что я ожидаю, что Scrollview может перемещаться вверх и показать 2 TextViews:NestedScrollView не может прокручивать с match_parent высоты ребенка

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <include 
       android:id="@+id/header" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       layout="@layout/header" /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_centerHorizontal="true" 
       android:layout_marginBottom="16dp" 
       android:src="@drawable/ic_up" /> 

     </RelativeLayout> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Text 1" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Text 2" /> 

    </LinearLayout> 

</android.support.v4.widget.NestedScrollView> 

Но он не мог прокручивать, Я перепробовал много способов, но до сих пор не получил какого-либо решения

+1

ScrollView нужна высота их ребенка быть wrap_content –

+0

@TimCastelijns поэтому у нас нет никаких способов сделать это с высоты match_parent, не так ли? –

+0

Вот как работает прокрутка, вы можете установить прокрутку в соответствии с родительским, но не дочерним элементом прокрутки, который должен быть обернут содержимым –

ответ

27
<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

Этот LinearLayout должен иметь android:layout_height="wrap_content".

Причина в том, что если дочерний элемент scrollview имеет тот же размер, что и сам scrollview (оба значения match_parent для высоты), это означает, что прокручивать нечего, поскольку они имеют одинаковый размер, а прокрутка будет только такой, как как экран.

Если linearlayout имеет высоту wrap_content, тогда высота не связана с высотой экрана, и прокрутка будет иметь возможность прокручивать ее.

Просто помните, что Scrollview может только 1 прямой ребенок, и что ребенок нуждается в android:layout_height="wrap_content"

+0

Awesome man! ......... –

+1

Для меня только ' fillViewPort = true' woked. Высота ребенка не имела значения в моем случае –

+0

fillViewPort = true также решила его для меня. Благодаря! –

-4

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
+1

может у вас больше объяснить ваш ответ? – Caipivara

1

В моем случае app:layout_behavior="@string/appbar_scrolling_view_behavior" это работает только, если какая-то проблема одна стороны будет попробовать и может также решить вашу проблему. вы должны добавить также android:fillViewport="true", но без этого мой код работает.

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="@drawable/subscription_background" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 
Смежные вопросы