RecyclerView внутри NestedScrollView

346
02 мая 2017, 05:19

Сделал горизонтальный RecyclerView внутри NestedScrollView. В итоге при запуске активности если RecyclerView не торчит на определенную высоту, то он сам делает чтобы торчал и скроллит NestedScrollView. Очень непонятное поведение, не смог найти ничего.

Вот так, когда описания мало (торчит на определенную высоту)

И вот так, когда описания много (он сам скроллит, чтобы эта высота торчала)

Код. Xml

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccccc"
android:fitsSystemWindows="false">
<android.support.design.widget.AppBarLayout
    android:id="@+id/main_appbar"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="false">
    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/main_collapsing"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        android:fitsSystemWindows="true"
        app:titleEnabled="false"
        app:contentScrim="@color/toolbar_bg">
        <ImageView
            android:id="@+id/mainbackdrop"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:fitsSystemWindows="true"
            app:layout_collapseMode="parallax"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            android:background="@drawable/scrim_top"
            app:layout_collapseMode="pin"/>
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin">
            <TextView
                android:id="@+id/info_title"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:layout_width="wrap_content"
                android:textColor="#ffffff"
                android:textStyle="bold"
                android:textSize="19sp"/>
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:id="@+id/nsv"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    <include layout="@layout/info_text"/>
</android.support.v4.widget.NestedScrollView>
<ImageView
    android:id="@+id/info_iv"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:scaleType="centerCrop"
    android:background="#cccccc"
    android:layout_marginRight="20dp"
    app:layout_anchor="@id/main_appbar"
    app:layout_anchorGravity="bottom|right|end"/>
</android.support.design.widget.CoordinatorLayout>

@layout/info_text:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:foreground="?android:attr/selectableItemBackground"
    android:layout_height="wrap_content"
    android:clickable="true"
    card_view:cardUseCompatPadding="true"
    card_view:cardCornerRadius="5dp"
    card_view:cardElevation="5dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginTop="16dp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:orientation="vertical">
        <TextView
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_width="wrap_content"
            android:text="ОПИСАНИЕ"
            style="@style/InfoTitle"
            android:paddingBottom="25dp"
            android:paddingTop="25dp"/>
        <TextView
            android:id="@+id/info_description"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:layout_width="match_parent"
            android:textColor="#000000"
            android:paddingBottom="25dp"/>
    </LinearLayout>
</android.support.v7.widget.CardView>
<TextView
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:layout_width="wrap_content"
    android:text="СКРИНШОТЫ"
    style="@style/InfoTitle"
    android:layout_marginLeft="32dp"
    android:layout_marginTop="21dp"/>
<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:id="@+id/info_screens"
    android:overScrollMode="never"
    android:layout_marginTop="20dp"
    android:background="#9E413B"/>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="20dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Качество:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_quality"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Год выхода:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_year"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Перевод:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_translation"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Длительность:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_duration"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Страна:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_country"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Жанр:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_genre"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="В ролях:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_cast"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_marginTop="5dp">
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:textStyle="bold"
        android:text="Режиссер:"/>
    <TextView
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_marginLeft="3dp"
        android:id="@+id/info_producer"
        android:textColor="#000000"/>
</LinearLayout>
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:layout_marginTop="20dp">
    <android.support.v7.widget.AppCompatButton
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="СМОТРЕТЬ"
        app:backgroundTint="@color/toolbar_bg"
        android:textColor="#ffffff"
        android:layout_weight="1.0"
        android:layout_marginRight="10dp"
        android:minHeight="70dp"
        android:maxHeight="70dp"
        android:id="@+id/info_view"/>
    <android.support.v7.widget.AppCompatButton
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:textColor="#ffffff"
        app:backgroundTint="@color/toolbar_bg"
        android:text="СКАЧАТЬ"
        android:layout_alignParentRight="true"
        android:layout_weight="1.0"
        android:layout_marginLeft="10dp"
        android:minHeight="70dp"
        android:maxHeight="70dp"
        android:id="@+id/info_download"/>
</LinearLayout>

Java

((NestedScrollView)(findViewById(R.id.nsv))).scrollTo(0,0); .//не катит
    scr = (RecyclerView)findViewById(R.id.info_screens);
    scr.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false));
    scr.setNestedScrollingEnabled(false);
Answer 1

Нашел. Нужно добавить

android:focusableInTouchMode="true"

В ребенка NestedScrollView. Оригинал ответа с enSO

READ ALSO
Отправка ajax post запроса к сервлету

Отправка ajax post запроса к сервлету

Не могу никак отправить простейший запрос к сервлету средствами jQueryНо при это если отправляю через форму, то все работает на ура

305
Recyclerview слетает анимация с элемента при скроллинге списка

Recyclerview слетает анимация с элемента при скроллинге списка

Необходимо задать анимацию нажатому элементу спискаЯ делаю это так:

312
java: как писать в InputStream/читать из outputstream?

java: как писать в InputStream/читать из outputstream?

чтобы считать из inputstream надо сначала туда что-то положить, верно?

324
Map size can&#39;t be 0

Map size can't be 0

В своем приложении использую google maps, но при переходе между активностями, бывает вылетает приложение со следующей ошибкой

305