3

Я хочу иметь CollapsingToolbarLayout (внутри AppBarLayout), который расширяет/сворачивает, когда пользователь встает с пальца. Когда пользователь удерживает и перемещает палец по экрану, CollapsingToolbarLayout должен одновременно изменять размер (стандартное поведение).Как заставить только два состояния (расширенные и свернутые) CollapsingToolbarLayour?

Моя проблемой является частью: "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 приложение больше не получает. Я не могу позвонить setExpanded(true, true) на панели приложений.

Итак, вопрос: есть ли другой способ получить информацию о том, что пользователь встает с пальцем? CollapsingToolbarLayout?

ответ

0

Если я правильно понял вашу проблему, вы пытаетесь полностью развернуть/свернуть CollapsingToolbarLayout после того, как пользователь перестает прокручивать (пользователи подняли палец с экрана)? AppBarLayout обеспечивает прокрутки-флаг оснастку содержания [1], чтобы обеспечить этот эффект:

общественность статического окончательного INT SCROLL_FLAG_SNAP

Upon свитка, заканчивающимся, если представление только частично видно, то она будет быть отрезанными и прокручиваться до ближайшего края. Например, если на дисплее отображается только нижнее 25%, оно полностью прокручивается до . И наоборот, если это снижается на 75%, тогда он будет полностью прокручиваться до .

[1] http://developer.android.com/reference/android/support/design/widget/AppBarLayout.LayoutParams.html#SCROLL_FLAG_SNAP