Недавно я прочитал эти сообщения:
Библиотека поддержки дизайна Android
Библиотека поддержки Android, версия 22.2.0
Но ни один из них не дает мне подробного примера создания нового FloatingActionButton
. Так сложно понять, я задаю этот вопрос.
Кто-нибудь может привести мне пример об этом?
Любая помощь очень ценится. Заранее спасибо.
РЕДАКТИРОВАТЬ
Я только что обнаружил некоторые проблемы на FloatingActionButton
(FAB) и хочу улучшить другой ответ. Смотрите мой ответ ниже.
Ответы:
Итак, в свой
build.gradle
файл добавьте это:Примечание для AndroidX: Google представляет новые библиотеки расширений AndroidX, которые заменят старые библиотеки поддержки. Чтобы использовать AndroidX, сначала убедитесь, что вы обновили свой
gradle.properties
файл , отредактировали,build.gradle
чтобы установитьcompileSdkVersion
значение28
(или выше), и используйте следующую строку вместо предыдущейcompile
.Далее, в вашем
themes.xml
илиstyles.xml
или любой другой , убедитесь , что вы установили this- это вашего приложения акцент color-- и цвет вашего FAB , если не переопределить его (смотрите ниже):В XML макета:
Или, если вы используете библиотеку материалов AndroidX, указанную выше, вы бы вместо этого использовали это:
Вы можете увидеть больше опций в документации (материалы здесь) (
setRippleColor
и т. Д.), Но следует отметить следующее:Еще один интересный вариант - чтобы изменить цвет фона только одного FAB, добавьте:
(например, чтобы изменить его на красный) в XML выше.
Во всяком случае, в коде, после того, как представление Activity / Fragment раздувается ....
Замечания:
Вот способ удалить или изменить отступ, если его слишком много:
Кроме того, я собирался программно разместить FAB на «стыке» между двумя областями в RelativeLayout, взяв высоту FAB, разделив на два и используя это как смещение поля. Но myFab.getHeight () вернул ноль, казалось, даже после того, как представление было раздутым. Вместо этого я использовал ViewTreeObserver, чтобы получить высоту только после того, как она выложена, а затем установила позицию. См. Этот совет здесь . Выглядело это так:
Не уверен, что это правильный способ, но, похоже, он работает.
Если вы хотите, чтобы FAB находился на «шве», вы можете использовать его,
layout_anchor
иlayout_anchorGravity
вот пример:Помните, что вы можете автоматически отскакивать от кнопки, когда появляется Snackbar , обернув ее в CoordinatorLayout .
Больше:
источник
android:backgroundTint="#FF0000"
например, к FloatingActionBar в XML. (добавление к ответу)sp
в свойстве evelation. Должно бытьapp:elevation="4dp"
FloatingActionButton
к aCoordinatorLayout
, вы можете использоватьapp:layout_anchor="element_with_seam"
и,app:layout_anchorGravity="bottom|right|end"
чтобы правильно расположить FAB над швом - см. Макет activity_detail из cheesesquareЯ только что обнаружил некоторые проблемы в FAB, и я хочу улучшить другой ответ.
setRippleColor проблема
Итак, проблема возникнет, когда вы программно установите цвет пульсации (цвет FAB включен)
setRippleColor
. Но у нас все еще есть альтернативный способ установить его, то есть путем вызова:Ваш проект должен иметь такую структуру:
И код от
fab_ripple_color.xml
:Наконец, немного измените свой FAB:
Для уровня API 21 и выше установите маржу справа и снизу на 24dp:
Руководства по проектированию FloatingActionButton
Как вы можете видеть в моем коде FAB xml выше, я установил:
Устанавливая эти атрибуты, вам не нужно устанавливать
layout_marginTop
иlayout_marginRight
снова (только на pre-Lollipop). Android автоматически разместит его в правой части экрана, что аналогично обычному FAB в Android Lollipop.Или вы можете использовать это в
CoordinatorLayout
:elevation
и 12dp .pressedTranslationZ
источник
pressedTranslationZ
. Я этого не знал.app:elevation
иapp:pressedTranslationZ
значение. Их значение по умолчанию - это значение, определенное в руководстве по дизайну материалов. Во всяком случае, прав Э.Шишкин, значения естьapp:elevation:6dp
иpressedTranslationZ:6dp
. Вы можете проверить это в исходном кодеFloatingActionButton
расширяетсяImageView
. Итак, это просто, как если бы вы добавилиImageView
в ваш макет. Вот образец XML.app:borderWidth="0dp"
добавлен как обходной путь для проблем с высотой.источник
для AndroidX используйте как
источник
Если вы уже добавили все библиотеки, а он по-прежнему не работает, используйте:
вместо того:
И все будет нормально работать :)
источник