Android при прокрутке recyclerview в окне просмотра, как выполнить верхнюю прокрутку родительского scrollview

Я придерживаюсь следующего мнения.

<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:background = "@color/white"
    android:fitsSystemWindows = "true"
    android:orientation = "vertical">

    <LinearLayout
        android:layout_width = "wrap_content"
        android:layout_height = "50dp"
        android:layout_gravity = "center|right"
        android:gravity = "center"
        android:orientation = "horizontal">
        <ImageView
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:onClick = "@{() -> viewActions.openMore()}"
            android:src = "@drawable/btn_my_more" />

    </LinearLayout>

    <ScrollView
        android:id = "@+id/layout_scrollview"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:fillViewport = "true">

        <LinearLayout
            android:id = "@+id/layout_root"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:orientation = "vertical">

            <LinearLayout
                android:id = "@+id/layout_profile"
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:layout_marginTop = "55dp"
                android:gravity = "center_horizontal"
                android:orientation = "vertical"
                android:visibility = "visible">

                <ImageView
                    android:id = "@+id/iv_profile_thumbnail"
                    android:layout_width = "90dp"
                    android:layout_height = "90dp"
                    android:background = "@drawable/shape_my_profile_thumbnail"
                    android:scaleType = "fitCenter"
                    app:profileThumbnailSrc = "@{myProfile.profileUrl}" />

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:layout_marginTop = "6dp"
                    android:text = "@{myProfile.urlId}"
                    android:textColor = "@color/black"
                    android:textSize = "23dp"
                    android:textStyle = "bold" />
            </LinearLayout>
            <android.support.v4.view.ViewPager
                android:id = "@+id/viewpager_my"
                android:layout_width = "match_parent"
                android:layout_height = "match_parent"
                android:layout_marginBottom = "@dimen/gnb_height" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

В viewpager есть два фрагмента с recyclerview.

когда я использую recyclerview в окне просмотра, прокручивайте вверх, как прокручивать верхний ScrollView. в настоящее время прокручивается только recyclervie в окне просмотра.

если знаете как решить, ответьте, пожалуйста, на мой вопрос. большое спасибо

попробуйте NestedScrollView

Moinkhan 18.12.2018 07:49

Не могли бы вы подробнее объяснить, чего именно вы пытаетесь достичь?

Rudrik Patel 18.12.2018 07:58

@Moinkhan, спасибо за ваш ответ, но я применил NestedScrollView, но он не работает

user1611241 18.12.2018 07:59

в nestedScrollView примените некоторые свойства, такие как fillViewPort, NestedScrollingEnable ...

Moinkhan 18.12.2018 08:00

@RudrikPatel viewpager имеет два фрагмента, каждый фрагмент имеет recyclerview, когда я прокручиваю recyclerview, родительский scrollview не прокручивается, прокручивается только recycerview

user1611241 18.12.2018 08:00

@ user1611241, значит, вы хотите, чтобы и recyclerView, и scrollview прокручивались в одном событии ??

Anmol 18.12.2018 10:27
1
6
409
2

Ответы 2

Я не уверен, решит ли это вашу проблему из-за отсутствия информации о коде, но попробуйте это и дайте мне знать, решит ли это вашу проблему.

    recyclerView.setHasFixedSize(true);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL, false);
    layoutManager.setAutoMeasureEnabled(true);
    recyclerView.setNestedScrollingEnabled(false);
    recyclerView.setLayoutManager(layoutManager);

я добавил свой код. Надеюсь, когда я прокручиваю вид ресайклера в окне просмотра, я хочу вместе прокрутить родительский scrollview (id = layout_scrollview)

user1611241 18.12.2018 15:03

Поэтому, когда вы прокручиваете страницу recyclerview вверх, вы хотите, чтобы макет миниатюр вашего профиля также перемещался вверх. Правильно?

Rudrik Patel 19.12.2018 10:04

используйте ниже, чтобы родительский элемент не получал какое-либо событие.

recyclerView.requestDisallowInterceptTouchEvent(true)

установите для него значение ложный, если вы хотите, чтобы родительский элемент перехватывал событие дочернего элемента.

если вы хотите остановить прокрутку в recycler, это особый случай:

override fun onTouchEvent(event: MotionEvent?): Boolean {
 //special case condition
   if (x==y&& event.action== MotionEvent.ACTION_DOWN){
     return false
  }
}

Другие вопросы по теме