Потрясающе из библиотеки поддержки не видно на Loliloop

Я реализую Fab. Показано на устройствах API < 21 но это не отображается на устройствах с API >= 21

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/transparent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/actionBarSize"
        android:background="@color/background_chart"

        android:clickable="true">


        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="@color/white_20"
            android:dividerHeight="1dip"
            android:footerDividersEnabled="false"
             />


    </RelativeLayout>

    <FrameLayout
        android:id="@+id/toolbar_shadow"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/actionBarSize"
        android:background="@drawable/bottom_shadow"
        android:foreground="@drawable/bottom_shadow" />

     <android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_marginTop="@dimen/fab_margin_top"
    android:layout_marginRight="@dimen/fab_margin_right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ic_add"
    app:borderWidth="0dp"
    app:elevation="6dip"
    app:pressedTranslationZ="12dp" />
</RelativeLayout>

Как показать это для всех api >=15?

Изменить: проблема, кажется, вызвано 2 причинами. 1) в леденце app:pressedTranslationZ="12dp" перемещает FAB вниз (как на полях вершины, где в леденце он больше не работает, как на полях полей, летучая мышь изменяет высоту нажатого состояния).
2) кнопка находится под макетом с высотой 4 (панель инструментов), я пытался установить разные app:elevation а также android:elevation для FAB, но это ничего не меняет.

3 ответа

Решение

Прежде всего, API 20 - это Kitkat 4.4.2, а 21+ - это Lollipop, а 23+ - Marshmallow.

В вашем случае вероятность того, что он скрыт за панелью действий, попробуйте и проверьте изменения...

Ошибка маржи в Android 4.4 и 5.0 с FAB - В Lollipop есть проблема с маржей. Чтобы решить эту проблему, определите верхний и правый поля с 16dp для API 21+ и с 0dp для предварительного леденца на палочке.

Значения /dimens.xml

<dimen name="fab_margin_right">0dp</dimen>
<dimen name="fab_margin_top">0dp</dimen>

Значения-V21/dimens.xml

<dimen name="fab_margin_right">16dp</dimen>
<dimen name="fab_margin_top">16dp</dimen>

и ссылаться на те же значения в вашем FAB внутри макета:

<android.support.design.widget.FloatingActionButton
   ...
   ...
   android:layout_marginTop="@dimen/fab_margin_top"
   android:layout_marginRight="@dimen/fab_margin_right"/>

Ссылка:

  1. http://www.technotalkative.com/part-1-floating-action-button/
  2. http://antonioleiva.com/floating-action-button/

Попробуйте переместить FAB в xml до FrameLayout или даже до RelativeLayout. У меня была похожая проблема, когда я добавил DrawerLayout в мой XML-файл. Когда я перемещал FAB перед DrawerLayout в xml-файле, FAB показывал.

Увеличьте значение высоты. Скорее всего, он находится за другим элементом пользовательского интерфейса.

В Lollipop и выше, высота контролирует "слой", в котором будет нарисован элемент.

Другие вопросы по тегам