web-dev-qa-db-ja.com

NestedScrollviewは上から開始されません

NestedScrollviewにRecyclerviewがあります。 NestedScrollviewには合計3つのビューがあります。最初の2つはLinearLayout、Recyclerviewです。アプリを実行すると、アクティビティにトップ2のレイアウトが表示されず、Recyclerviewの上部から始まります。

レイアウトの表示方法:

How its show my layout

その表示方法:

How its suppose to show

そして、私はこのページレイアウトをビューページャーの下にロードしていますが、私のビューページャーはコーディネーターレイアウトの子です。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.NestedScrollView
Android:id="@+id/scrollView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/home_layout_background">

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

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="horizontal">

        <com.daimajia.slider.library.SliderLayout
            Android:id="@+id/image_slider"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/image_slider_height"
            Android:layout_marginTop="@dimen/image_slider_top_margin" />
    </LinearLayout>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginLeft="@dimen/popular_fragment_side_padding"
        Android:layout_marginRight="@dimen/popular_fragment_side_padding"
        Android:layout_marginTop="@dimen/popular_fragment_side_padding"
        Android:orientation="horizontal"
        Android:weightSum="4">

        <RelativeLayout
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="1">

            <RelativeLayout
                Android:id="@+id/free_delivery"
                Android:layout_width="76dp"
                Android:layout_height="76dp"
                Android:layout_centerInParent="true"
                Android:background="@color/white">

                <RelativeLayout
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerInParent="true">

                    <ImageView
                        Android:id="@+id/btnImageViewFreeDelivery"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerHorizontal="true"
                        Android:background="@drawable/icon_free_delivery" />

                    <TextView
                        Android:id="@+id/btnTextFreeDelivery"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_below="@+id/btnImageViewFreeDelivery"
                        Android:layout_centerHorizontal="true"
                        Android:layout_marginTop="2dp"
                        Android:text="@string/free_delivery_txt"
                        Android:textColor="@color/popular_fragment_four_btn_txt"
                        Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                </RelativeLayout>

            </RelativeLayout>

        </RelativeLayout>

        <RelativeLayout
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="1">

            <RelativeLayout
                Android:id="@+id/flash_deals"
                Android:layout_width="76dp"
                Android:layout_height="76dp"
                Android:layout_centerInParent="true"
                Android:background="@color/white">


                <RelativeLayout
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerInParent="true">

                    <ImageView
                        Android:id="@+id/btnImageViewFlashDeals"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerHorizontal="true"
                        Android:background="@drawable/icon_flash_deals" />

                    <TextView
                        Android:id="@+id/btnTextFlashDeals"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_below="@+id/btnImageViewFlashDeals"
                        Android:layout_centerHorizontal="true"
                        Android:layout_marginTop="2dp"
                        Android:text="@string/flash_deals_txt"
                        Android:textColor="@color/popular_fragment_four_btn_txt"
                        Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                </RelativeLayout>

            </RelativeLayout>

        </RelativeLayout>

        <RelativeLayout
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="1">

            <RelativeLayout
                Android:id="@+id/for_you"
                Android:layout_width="76dp"
                Android:layout_height="76dp"
                Android:layout_centerInParent="true"
                Android:background="@color/white">

                <RelativeLayout
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerInParent="true">

                    <ImageView
                        Android:id="@+id/btnImageViewForYou"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerHorizontal="true"
                        Android:background="@drawable/icon_for_you" />

                    <TextView
                        Android:id="@+id/btnTextForYou"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_below="@+id/btnImageViewForYou"
                        Android:layout_centerHorizontal="true"
                        Android:layout_marginTop="2dp"
                        Android:text="@string/for_you_txt"
                        Android:textColor="@color/popular_fragment_four_btn_txt"
                        Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                </RelativeLayout>


            </RelativeLayout>
        </RelativeLayout>

        <RelativeLayout
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="1">

            <RelativeLayout
                Android:id="@+id/shake_deals"
                Android:layout_width="76dp"
                Android:layout_height="76dp"
                Android:layout_centerInParent="true"
                Android:background="@color/white">

                <RelativeLayout
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerInParent="true">

                    <ImageView
                        Android:id="@+id/btnImageViewShakeDeals"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerHorizontal="true"
                        Android:background="@drawable/icon_shake_deals" />

                    <TextView
                        Android:id="@+id/btnTextShakeDeals"
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_below="@+id/btnImageViewShakeDeals"
                        Android:layout_centerHorizontal="true"
                        Android:layout_marginTop="2dp"
                        Android:text="@string/shake_deals"
                        Android:textColor="@color/popular_fragment_four_btn_txt"
                        Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                </RelativeLayout>

            </RelativeLayout>
        </RelativeLayout>
    </LinearLayout>

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/recycler_view"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_marginLeft="@dimen/popular_fragment_side_padding"
        Android:layout_marginRight="@dimen/popular_fragment_side_padding"
        Android:layout_marginTop="18dp"
        Android:scrollbars="none" />

</LinearLayout>

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

私のViewPagerレイアウト

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/main_content"
Android:layout_width="match_parent"
Android:layout_height="match_parent">

<Android.support.v4.view.ViewPager
    Android:id="@+id/viewPager"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/home_layout_background"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<Android.support.design.widget.AppBarLayout
    Android:id="@+id/appbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:layout_gravity="center"
        Android:background="@drawable/toolbar_background"
        app:layout_scrollFlags="scroll|enterAlways">

        <TextView
            Android:id="@+id/toolbar_title"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center"
            Android:text="@string/title_home"
            Android:textColor="@color/toolbar_title_txt_color"
            Android:textSize="@dimen/toolbar_txt_size"
            Android:textStyle="bold" />

    </Android.support.v7.widget.Toolbar>


    <Android.support.design.widget.TabLayout Android:id="@+id/tabs"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="@color/white"
        app:tabMode="scrollable"
        app:tabTextColor="@color/tab_bar_txt"
        app:tabIndicatorColor="@color/tab_bar_txt_selected"
        app:tabSelectedTextColor="@color/tab_bar_txt_selected"
        app:tabTextAppearance="@style/TabTextAppeareance"/>

</Android.support.design.widget.AppBarLayout>



</Android.support.design.widget.CoordinatorLayout>
46
Suvro

フォーカスに関する問題です。試してください:

findViewById(R.id.recycler_view).setFocusable(false);
findViewById(R.id.temp).requestFocus();

<?xml version="1.0" encoding="utf-8"?>
    <Android.support.v4.widget.NestedScrollView
    Android:id="@+id/scrollView"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/home_layout_background">

    <LinearLayout
        Android:id="@+id/temp"
        Android:focusable="true"
        Android:focusableInTouchMode="true"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:orientation="horizontal">

            <com.daimajia.slider.library.SliderLayout
                Android:id="@+id/image_slider"
                Android:layout_width="match_parent"
                Android:layout_height="@dimen/image_slider_height"
                Android:layout_marginTop="@dimen/image_slider_top_margin" />
        </LinearLayout>

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="@dimen/popular_fragment_side_padding"
            Android:layout_marginRight="@dimen/popular_fragment_side_padding"
            Android:layout_marginTop="@dimen/popular_fragment_side_padding"
            Android:orientation="horizontal"
            Android:weightSum="4">

            <RelativeLayout
                Android:layout_width="0dp"
                Android:layout_height="match_parent"
                Android:layout_weight="1">

                <RelativeLayout
                    Android:id="@+id/free_delivery"
                    Android:layout_width="76dp"
                    Android:layout_height="76dp"
                    Android:layout_centerInParent="true"
                    Android:background="@color/white">

                    <RelativeLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerInParent="true">

                        <ImageView
                            Android:id="@+id/btnImageViewFreeDelivery"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_centerHorizontal="true"
                            Android:background="@drawable/icon_free_delivery" />

                        <TextView
                            Android:id="@+id/btnTextFreeDelivery"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_below="@+id/btnImageViewFreeDelivery"
                            Android:layout_centerHorizontal="true"
                            Android:layout_marginTop="2dp"
                            Android:text="@string/free_delivery_txt"
                            Android:textColor="@color/popular_fragment_four_btn_txt"
                            Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                    </RelativeLayout>

                </RelativeLayout>

            </RelativeLayout>

            <RelativeLayout
                Android:layout_width="0dp"
                Android:layout_height="match_parent"
                Android:layout_weight="1">

                <RelativeLayout
                    Android:id="@+id/flash_deals"
                    Android:layout_width="76dp"
                    Android:layout_height="76dp"
                    Android:layout_centerInParent="true"
                    Android:background="@color/white">


                    <RelativeLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerInParent="true">

                        <ImageView
                            Android:id="@+id/btnImageViewFlashDeals"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_centerHorizontal="true"
                            Android:background="@drawable/icon_flash_deals" />

                        <TextView
                            Android:id="@+id/btnTextFlashDeals"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_below="@+id/btnImageViewFlashDeals"
                            Android:layout_centerHorizontal="true"
                            Android:layout_marginTop="2dp"
                            Android:text="@string/flash_deals_txt"
                            Android:textColor="@color/popular_fragment_four_btn_txt"
                            Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                    </RelativeLayout>

                </RelativeLayout>

            </RelativeLayout>

            <RelativeLayout
                Android:layout_width="0dp"
                Android:layout_height="match_parent"
                Android:layout_weight="1">

                <RelativeLayout
                    Android:id="@+id/for_you"
                    Android:layout_width="76dp"
                    Android:layout_height="76dp"
                    Android:layout_centerInParent="true"
                    Android:background="@color/white">

                    <RelativeLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerInParent="true">

                        <ImageView
                            Android:id="@+id/btnImageViewForYou"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_centerHorizontal="true"
                            Android:background="@drawable/icon_for_you" />

                        <TextView
                            Android:id="@+id/btnTextForYou"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_below="@+id/btnImageViewForYou"
                            Android:layout_centerHorizontal="true"
                            Android:layout_marginTop="2dp"
                            Android:text="@string/for_you_txt"
                            Android:textColor="@color/popular_fragment_four_btn_txt"
                            Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                    </RelativeLayout>


                </RelativeLayout>
            </RelativeLayout>

            <RelativeLayout
                Android:layout_width="0dp"
                Android:layout_height="match_parent"
                Android:layout_weight="1">

                <RelativeLayout
                    Android:id="@+id/shake_deals"
                    Android:layout_width="76dp"
                    Android:layout_height="76dp"
                    Android:layout_centerInParent="true"
                    Android:background="@color/white">

                    <RelativeLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerInParent="true">

                        <ImageView
                            Android:id="@+id/btnImageViewShakeDeals"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_centerHorizontal="true"
                            Android:background="@drawable/icon_shake_deals" />

                        <TextView
                            Android:id="@+id/btnTextShakeDeals"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:layout_below="@+id/btnImageViewShakeDeals"
                            Android:layout_centerHorizontal="true"
                            Android:layout_marginTop="2dp"
                            Android:text="@string/shake_deals"
                            Android:textColor="@color/popular_fragment_four_btn_txt"
                            Android:textSize="@dimen/popular_fragment_four_btn_txt_size" />
                    </RelativeLayout>

                </RelativeLayout>
            </RelativeLayout>
        </LinearLayout>

        <Android.support.v7.widget.RecyclerView
            Android:id="@+id/recycler_view"
            Android:focusable="false"
            Android:focusableInTouchMode="false"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_marginLeft="@dimen/popular_fragment_side_padding"
            Android:layout_marginRight="@dimen/popular_fragment_side_padding"
            Android:layout_marginTop="18dp"
            Android:scrollbars="none" />

    </LinearLayout>

    </Android.support.v4.widget.NestedScrollView>
58
tiny sunlight

私は同じ問題を抱えていたので、次の方法で修正しました。

ネストされたスクロールビューの唯一の子であるリニアレイアウトにAndroid:descendantFocusability="blocksDescendants"を追加します。

これにより、ネストされたスクロールビューをコードの変更を最小限に抑えて上から開始できます。

86
Seop Yoon

この行をxmlのNestedScrollViewの子に追加するだけです:

Android:focusableInTouchMode="true"
12
<Android.support.v4.widget.NestedScrollView
            Android:id="@+id/nested_scrool_view"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:descendantFocusability="beforeDescendants"
            Android:focusableInTouchMode="true"
            Android:fitsSystemWindows="false"
            >

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


NestedScrollView nested_scrool_view;
nested_scrool_view = mView.findViewById(R.id.nested_scrool_view);
nested_scrool_view.smoothScrollTo(0,0); //set it on top
0
Keshav Gera

この行をNestedScrollViewの子レイアウトに追加します

Android:descendantFocusability="afterDescendants"
0
BekaKK