我希望CollapsingToolbarLayout
(在AppBarLayout
内)当用户起床时展开/折叠。当用户在屏幕上按住并移动手指时,CollapsingToolbarLayout
应同时更改大小(标准行为)。
我的问题是:" CollapsingToolbarLayout
当用户起手时展开/折叠
我有来自材料支持库(片段)的标准解决方案:
(我删除不重要的属性):
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_scrolling" />
</android.support.design.widget.CoordinatorLayout>
我尝试像这样处理onTouch事件:
findViewById(R.id.app_bar).setOnTouchListener(new View.OnTouchListener() {
int counter = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
counter++;
Log.d("tag toolbar_layout", "=== ACTION_DOWN "+ counter);
break;
case MotionEvent.ACTION_CANCEL:
counter--;
Log.d("tag toolbar_layout", " == ACTION_UP " +counter);
break;
case MotionEvent.ACTION_CANCEL:
counter--;
Log.d("tag toolbar_layout", " == ACTION_CANCEL "+ counter);
break;
default:
Log.d("tag toolbar_layout", "onTouch "+ event.getAction());
}
return true;
}
但我几乎收到ACTION_CANCEL
并且非常罕见ACTION_UP
和ACTION_CANCEL
太早我在应用收到该事件时仍然屏幕上仍然有手指。在ACTION_CANCEL
之后应用程序甚至不再收到任何应用程序。我无法在appbar上拨打setExpanded(true, true)
。
所以问题是:还有另一种获取用户手指形式CollapsingToolbarLayout
的信息吗?
答案 0 :(得分:0)
如果我正确理解您的问题,您会在用户停止滚动(用户已从屏幕上抬起手指)后尝试完全展开/折叠CollapsingToolbarLayout
? AppBarLayout
提供了一个滚动标记来捕捉内容[1]以提供此效果:
public static final int SCROLL_FLAG_SNAP
滚动结束时,如果视图只是部分可见,那么它 将被捕捉并滚动到它最近的边缘。例如,如果 视图只显示它的底部25%,它将被滚动关闭 屏幕完全。相反,如果它的底部75%是可见的那么它 将完全滚动到视图中。