问题: 我有一个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的错误