NestedScrollviewにRecyclerviewがあります。 NestedScrollviewには合計3つのビューがあります。最初の2つはLinearLayout、Recyclerviewです。アプリを実行すると、アクティビティにトップ2のレイアウトが表示されず、Recyclerviewの上部から始まります。
レイアウトの表示方法:
その表示方法:
そして、私はこのページレイアウトをビューページャーの下にロードしていますが、私のビューページャーはコーディネーターレイアウトの子です。
<?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>
フォーカスに関する問題です。試してください:
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>
私は同じ問題を抱えていたので、次の方法で修正しました。
ネストされたスクロールビューの唯一の子であるリニアレイアウトにAndroid:descendantFocusability="blocksDescendants"
を追加します。
これにより、ネストされたスクロールビューをコードの変更を最小限に抑えて上から開始できます。
この行をxmlのNestedScrollView
の子に追加するだけです:
Android:focusableInTouchMode="true"
<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
この行をNestedScrollView
の子レイアウトに追加します
Android:descendantFocusability="afterDescendants"