2

Я использую CoordinatorLayout и NestedScrollView для создания деятельности выглядит следующим образом: enter image description hereCoordinatorLayout и RecyclerView вопрос

Моя структура макета, как это:

<android.support.design.widget.CoordinatorLayout   
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".activity.MovieDetailActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBar" 
     android:layout_width="match_parent" 
     android:layout_height="250dp" 
     android:fitsSystemWindows="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsingToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/imgToolbarImage" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       android:src="@drawable/backdrop" 
       app:layout_collapseMode="parallax" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

     <android.support.v4.widget.NestedScrollView 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

       <android.support.v7.widget.CardView 
        ... > 
        <ImageView 
         ... /> 
       </android.support.v7.widget.CardView> 

       <TextView 
         ... /> 

       <TextView 
         ... /> 

       <ImageView 
         ... /> 

       <TextView 
        ... /> 

       <com.aminiam.moviekade.custom_view.ExpandableTextView 
        ... /> 

       <android.support.v4.view.ViewPager 
        ... /> 

       <com.aminiam.moviekade.custom_view.DotIndicator 
        ... /> 

       <View 
        ... /> 

       <LinearLayout 
        ... > 

        <TextView 
         ... /> 

        <android.support.v7.widget.RecyclerView 
         ... /> 
       </LinearLayout> 

       <android.support.v4.view.ViewPager 
        ... /> 

       <TextView 
        ... /> 
      </RelativeLayout> 

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

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/activity_horizontal_margin" 
     app:layout_anchor="@id/appBar" 
     app:layout_anchorGravity="bottom|end" 
     app:srcCompat="@drawable/ic_favorite_off" /> 
</android.support.design.widget.CoordinatorLayout> 

Когда я добавляю RecyclerView к раскладке, NestedScrollView будет проходить под AppBarLayout, как изображение ниже:

enter image description here

Я протестировал некоторые способы исправления этой проблемы, например, поместить NestedScrollView в FrameLayout или добавить атрибуты android:layout_gravity="fill_vertical" и android:fillViewport="true" в NestedScrollView, но это не могло устранить проблему.

+0

Какова высота 'recyclerview'? 'Wrap_content'? – Wizard

+0

Нет. Я добавил для этого высоту исправления. android: layout_height = "150dp" – hosseinAmini

ответ

4

Попробуйте добавить android:descendantFocusability="blocksDescendants" в свой RelativeLayout

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:descendantFocusability="blocksDescendants" > 

</RelativeLayout> 

Примечание:descendantFocusability Определяет связь между ViewGroup и его потомков, когда ищет View, чтобы получить фокус. Здесь мы блокируем это.

+0

Это точно правильный ответ. огромное спасибо – hosseinAmini

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

  • Нет связанных вопросов^_^