Не работает должным образом с использованием ListView в NestedScrollView - PullRequest
0 голосов
/ 21 мая 2018

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

<android.support.v4.widget.NestedScrollView
        android:id="@+id/nestedScroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
       <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/user_menu_bg"
            android:orientation="vertical">

            <ListView
                android:id="@+id/menu_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:divider="@drawable/menu_list_divider"
                android:listSelector="@android:color/transparent"
                android:nestedScrollingEnabled="true" />
        </LinearLayout>

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

1 Ответ

0 голосов
/ 21 мая 2018

Лучше использовать NonScrollableListView вместо просмотра списка.Или используйте RecyclerView.

Попробуйте

public class NonScrollListView extends ListView {

    public NonScrollListView(Context context) {
        super(context);
    }
    public NonScrollListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
                    Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
            ViewGroup.LayoutParams params = getLayoutParams();
            params.height = getMeasuredHeight();    
    }
}
...