Android appBarLayout行为nestedScroll禁用错误

时间:2015-12-11 06:54:24

标签: android

问题: 我有一个xml如下:

在android支持设计23.1.1

<android.support.design.widget.CoordinatorLayout
        android:id="@+id/myMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

        <android.support.design.widget.AppBarLayout
            android:id="@+id/myappBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            >

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/main.collapsing"
                android:layout_width="350dp"
                android:layout_height="450dp"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                >

                <ImageView
                    android:id="@+id/main.imageview.placeholder"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scaleType="centerCrop"
                    android:src="@drawable/quila2"
                    android:tint="#11000000"
                    app:layout_collapseMode="parallax"
                    />

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

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/scrollmyMain"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none"
            app:behavior_overlapTop="30dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            >
            <android.support.v7.widget.CardView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="8dp"
                app:cardElevation="8dp"
                app:contentPadding="16dp"
                >

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:lineSpacingExtra="8dp"
                    android:text="@string/lorem"
                    android:textSize="18sp"
                    />
            </android.support.v7.widget.CardView>


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


    </android.support.design.widget.CoordinatorLayout>

如果要禁用nestedscroll,请执行以下操作:

mCoordinatorLayout.setNestedScrollingEnabled(false);
nestedScrollView.setNestedScrollingEnabled(false);
mAppBarLayout.setNestedScrollingEnabled(false);

你会发现,如果触摸并移动appBar,可以移动nestScrollView,这意味着无法禁用nestedScroll。

我找到的原因在于支持设计libraray 23.1.1 AppBarLayout的行为扩展了HeaderBehavior 23.1.1 AppBarLayout的行为扩展了ViewOffsetBehavior 22.2.1

HeaderBehavior有ovverride

 public boolean onTouchEvent(CoordinatorLayout parent, V child, MotionEvent ev) {
   scroll
};

所以在其他方面,破坏了这种机制。

如果要在设计支持23.1.1中禁用所有nestedScroll

你应该扩展appBar的行为

我认为这可能是支持23.1.1的错误

0 个答案:

没有答案