У меня есть три кнопки внутри CollapsingToolbarLayout
. При расширении идея состоит в том, чтобы изменить фильтр в отображаемой галерее изображений или открыть диалоговое окно редактирования. Я получал противоречивые результаты — кнопки реагировали только на щелчки с перерывами.
В конце концов я понял, что проблема заключалась в том, что интерактивная область была намного меньше, чем клиентский прямоугольник представления. По горизонтали они кажутся обычными, но по вертикали кликабельная область намного короче кнопки. В эмуляторе я смог довольно точно определить границы:
Вы можете касаться их обычно слева направо, но сверху вниз неправильно.
Я пытался собрать этот макет из различных фрагментов документации, официальных руководств, онлайн-руководств и примеров с открытым исходным кодом. Я не совсем понимаю, как все причудливые макеты поддержки/дизайна работают вместе или что именно делают все атрибуты конфигурации в сочетании, поэтому вполне возможно, что исправление будет простым изменением одного или двух атрибутов. Вот мой макет:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".activity.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="?android:actionBarSize"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:contentScrim="?attr/colorPrimary"
android:background="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
android:theme="@style/Widget.Design.CollapsingToolbar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:paddingTop="32dp"
android:paddingBottom="64dp"
android:fitsSystemWindows="true"
app:layout_collapseMode="none"
android:background="@android:color/transparent"
android:orientation="horizontal">
<ImageButton android:id="@+id/btnTags"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_weight="0.3"
android:src="@drawable/ic_tag"
android:tint="?android:attr/buttonTint"
android:background="@drawable/ripple" />
<ImageButton android:id="@+id/btnAlbums"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_weight="0.3"
android:src="@drawable/ic_albums"
android:tint="?android:attr/buttonTint"
android:background="@drawable/ripple" />
<ImageButton android:id="@+id/btnNewAlbum"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_weight="0.3"
android:src="@drawable/ic_new_album"
android:tint="?android:attr/buttonTint"
android:background="@drawable/ripple" />
</LinearLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbarMain"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:title="@string/app_name"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/LouvreTheme.ToolbarStyle"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<co.moonmonkeylabs.realmrecyclerview.RealmRecyclerView
android:id="@+id/recyclerAlbumGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="?android:attr/background"
app:rrvLayoutType="Grid"
app:rrvGridLayoutSpanCount="@integer/grid_span"
app:rrvIsRefreshable="false"
app:rrvSwipeToDelete="false" />
</android.support.design.widget.CoordinatorLayout>
Затем в моем onViewCreated()
я назначаю каждой из кнопок OnClickListener. Я могу надежно и предсказуемо активировать их, но только нажав на узкую вертикальную полосу, изображенную выше.
Обходной путь и корректировки, которые я уже пробовал:
- Переключение с
ImageView
s наFloatingActionButton
s и, наконец,ImageButton
s - Наложение
android:fitsSystemWindows="true"
на разные представления, включая все из них - Изменение размеров кнопок с
wrap_content
на размер, указанный вVectorDrawable
, которые они отображают. - Установка
android:minHeight
наLinearLayout
того же явного размера, что и кнопки - Сделать
layout_weight
каждой кнопки равным 1,0 и установить сумму 3,0. - Пробуем
app:layout_collapseMode
по-разному, какparalax
иnone
наLinearLayout
с кнопками.
Единственная похожая проблема, которую мне удалось найти на SO, заключается в следующем: AppBarLayout и CollapsingToolbarLayout не могут содержать кнопку? Удовлетворительный ответ так и не был предоставлен, только обходной путь перемещения кнопки за пределы области свертывания.
Мысли?
android:background="@android:color/holo_red_dark"
наLinearLayout
фактически делает весь макет панели инструментов красным, чего я не ожидал. Но это точно не обрезание посередине в кнопках. - person Ionoclast Brigham   schedule 22.08.2016