28

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

+2

http://stackoverflow.com/a/6211286 – Sree

ответ

28

Для правильной работы необходимо выполнить прокрутку для реализации NestedScrollingChild. Такими классами являются NestedScrollView и RecyclerView.

Сказать, что коротко - просто использовать RecyclerView для содержания прокрутки, и он будет работать правильно :)

P.S. В качестве примечания я не вижу причины, по которой вы бы использовали ListView. Я знаю, что это привычка, и ее легче настроить (потому что вы делали это много раз), но использование RecyclerView - это рекомендуемый способ.

+1

Я не вижу реализацию адаптера FastScroll и раздел для просмотра ресайклера еще – sha

+1

Как я могу реализовать Расширяемую ListView –

+6

RecyclerView не обрабатывать CursorAdapter. Это может быть хорошей причиной! – Blodhgard

56

вы можете исправить это, когда вы добавите addtributeandroid:fillViewport="true" в android.support.v4.widget.NestedScrollView :). Это мой код.

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="none" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:fillViewport="true" 
    > 
    <ListView 
     android:id="@+id/list_myContent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical" 
     > 
    </ListView> 

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

это не сработало для меня. –

+15

Не работал и для меня. Содержимое ListView не прокручивается. –

+6

android: fillViewport = "true" сделал магию +1 –

27

на леденец года вы можете использовать

setNestedScrollingEnabled(true); 

на вашем ListView/GridView/ScrollableView. Из документации

Включения или отключение вложенной прокрутки для этого вида

если вам нужна обратная совместимость с более старой версией ОС вам придется использовать RecyclerView. Вы можете читать далее here

Редактировать. ViewCompat имеет статический метод setNestedScrollingEnabled(View, boolean). Например.

ViewCompat.setNestedScrollingEnabled(listView, true) 

благодаря @Dogcat за указание его

+1

Этот ответ определенно должен быть одобрен и даже задан как правильный ответ. Я закончил тем, что изменил свою реализацию на «RecyclerView», потому что я только прочитал ответ, который был принят в качестве ответа. Да, конечно, я мог бы прочитать все ответы, но первый работал для меня - если бы просто хлопот, чтобы изменить реализацию ;-) – Darwind

+0

@Dogcat спасибо за указатель – Blackbelt

+1

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

10

android:fillViewport="true" Просто поместите внутри вас NestedScrollView Tag

+0

Пожалуйста, объясните, как ваш ответ решает проблему, это поможет всем понять ваше решение с большей ясностью и для дальнейшего использования. – Aziz

+0

@ На самом деле, я тоже столкнулся с такой же проблемой, и это сработало. при установке «fillViewport» true это растягивает высоту контента до границ окна просмотра, – Shivam

0

Вы не можете прокрутить ListView внутри nestedscrollview.Use Recyclerview с nestedscrollview

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

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/colorAccent" 
     android:orientation="horizontal"> 

     <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/profile_image" 
      android:layout_width="76dp" 
      android:layout_height="76dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="24dp" 
      android:layout_marginStart="24dp" 
      android:src="@drawable/profile" 
      app:border_color="#FF000000" /> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_marginLeft="20dp" 
      android:layout_toRightOf="@+id/profile_image" 
      android:gravity="center_vertical" 
      android:orientation="vertical"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="IRFAN QURESHI" 
       android:textSize="20sp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="[email protected]" /> 
     </LinearLayout> 

     <ImageView 
      android:layout_marginLeft="50dp" 
      android:layout_gravity="center_vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_delete_black" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 

     android:background="@color/colorPrimary" 
     android:gravity="center_horizontal" 
     android:padding="30dp"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:background="@drawable/login_email_bg_round_rect_shape" 
      android:gravity="center_horizontal" 
      android:padding="10dp" 
      android:text="POST A QUERY" /> 
    </LinearLayout> 

     <!--<ListView 
      android:id="@+id/list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
     </ListView>--> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="vertical" /> 


    <RelativeLayout 
     android:background="@color/colorAccent" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:padding="8dp" 
      android:gravity="center_vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="SIGN OUT" /> 
     <ImageView 
      android:paddingTop="5dp" 
      android:layout_marginRight="40dp" 
      android:layout_alignParentRight="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_delete_black" /> 
    </RelativeLayout> 
</LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

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

Просто добавьте android: nestedScrollingEnabled = "true" в свой NestedScrollView.

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="none" 
    android:nestedScrollingEnabled="true"> 
    <ListView 
     android:id="@+id/list_myContent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical"> 
    </ListView> 

+1

Этот поддерживается только в API 21 и выше. К сожалению, я строю за 16 минимум. –

0

это то, что работает для меня.

android:fillViewport="true" установить на NestedScrollView

добавить один элемент макета, как ребенок к NestedScrollView.В моем случае LinearLayout, а затем установить android:nestedScrollingEnabled="true" на ListView Сделать ListView дитя LinearLayout

Хорошо идти

0

Ниже код работал для меня:

ViewCompat.setNestedScrollingEnabled (ListView, правда);

Ваш ListView должен быть внутри NestedScrollView

Смежные вопросы