アクティビティページでCoordinatorLayout
を使用しています。その点で、アプリバーの下にListView
があります。しかし、ListView
の代わりにNestedScrollView
を使用すると動作しません。 ListView
をNestedScrollView
の中に入れると、ListView
は展開されません
CoordinatorLayout
が適切に機能するには、スクロール子が NestedScrollingChild を実装する必要があります。そのようなクラスは、NestedScrollView
およびRecyclerView
です。
簡単に言うと、スクロールコンテンツにRecyclerView
を使用するだけで、正しく機能します:)
追伸副次的な注意として、ListView
を使用する理由がわかりません。私はそれが習慣であり、セットアップが簡単であることがわかっています(何度も行っているため)。とにかくRecyclerView
を使用することをお勧めします。
addtribute
Android: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>
lollipop以降では使用できます
_setNestedScrollingEnabled(true);
_
listView/GridView/ScrollableViewで。ドキュメントから
このビューのネストされたスクロールを有効または無効にします
oSの古いバージョンとの後方互換性が必要な場合は、RecyclerView
を使用する必要があります。もっと読むことができます こちら
編集。 ViewCompat
には、静的メソッドsetNestedScrollingEnabled(View, boolean)
があります。例えば。
_ViewCompat.setNestedScrollingEnabled(listView, true)
_
指摘してくれた_@Dogcat
_に感謝
ただAndroid:fillViewport="true"
あなたの中NestedScrollView
タグ
これは私のために働いたものです。
セットする Android:fillViewport="true"
上のNestedScrollView
NestedScrollView
に1つのレイアウト要素を子として追加します。私の場合、LinearLayout
を設定してからAndroid:nestedScrollingEnabled="true"
on ListView
on ListView
をLinearLayout
の子にする
行ってもいい
リストビューがスクロールします。助けてほしい。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<ListView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:nestedScrollingEnabled="true">
</ListView>
</Android.support.v4.widget.NestedScrollView>
</Android.support.design.widget.CoordinatorLayout>
以下のコードが私のために働いた:
ViewCompat.setNestedScrollingEnabled(listView, true);
ListView
はNestedScrollView
の中にあるはずです
可能であれば、ListViewをRecyclerView
に置き換えます。そうでない場合は、customListViewを作成し、onMeasure
のListView
を次のように設定します。
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
このListView
はスクロールできなくなり、NestedScrollView
内で使用できます。
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>
NestedScrollView内にAndroid:nestedScrollingEnabled = "true"タグを追加するだけです。
<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>
Prokash Sarkar によるこのソリューションは、NestedScrollView内で適切にスクロールできるように、ListViewのコンテンツを拡張するために完全に機能することがわかりました。
親NestedScrollViewでListViewをスクロールできません-Android
これがNestedScrollViewとListViewを検索する他の人に役立つことを願っています。