2

Я хочу показать разворачивающуюся/расширяющуюся компоновку панели инструментов, которая имеет значок в верхнем правом углу - как в расширенном, так и в сжатом состоянии. Значок не должен двигаться вообще.Android: помещаем иконку в верхнем правом углу коллапса ToolbarLayout?

Если я использую layout_gravity и пишу «сверху», тогда значок не будет виден, когда макет будет свернут, и если я напишу «снизу», тогда значок не будет отображаться вверху, когда макет будет расширен. Как я могу это решить?

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/rootLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="220dp" 
    android:fitsSystemWindows="true" 
    > 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsingToolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:collapsedTitleGravity="center" 
     app:expandedTitleGravity="bottom|start" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     > 

      <ImageView 
      android:id="@+id/backgroundImage" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:contentDescription="@null" 
      android:scaleType="centerCrop" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" 
      /> 

     <FrameLayout 
      android:id="@+id/shadow" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/black_40percent_opacity" 
      /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:layout_collapseMode="pin" 
      /> 

     <ImageView 
      android:id="@+id/iconToShow" 
      android:layout_width="56dp" 
      android:layout_height="56dp" 
      android:src="@drawable/some_drawable" 
      android:padding="16dp" 
      android:layout_gravity="top|end" 
      /> 

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

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

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

Попробуйте принимать значок из AppBarLayout – Jago

+0

спасибо - это показывает значок правильно, когда макет расширяется и когда он рушится, но когда макет полностью рушится, значок исчезает – Jon

+1

. Выполните следующие действия: http://saulmm.github.io/mastering-coordinator/ https://github.com/saulmm/CoordinatorBehaviorExample/blob/master/app/src/main/res/layout/activity_main.xml Изменить: можете ли вы опубликовать весь свой макет? – Jago

ответ

2

Решение оказалось бы добавить эту строку в ImageView - никаких изменений не было необходимости:

app:layout_collapseMode="pin" 

Так что теперь вся ImageView выглядит следующим образом:

<ImageView 
      android:id="@+id/someImage" 
      android:layout_width="56dp" 
      android:layout_height="wrap_content" 
      android:src="@drawable/someDrawable" 
      android:padding="16dp" 
      android:layout_gravity="top|end" 
      app:layout_collapseMode="pin" 
      />