来自支持库的Fab在Loliloop上不可见

时间:2015-10-06 15:12:39

标签: android android-design-library floating-action-button

我正在实施Fab。它显示在设备API< 21 enter image description here 但它没有在API> = 21的设备上显示 enter image description here

<?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&gt; = 15显示它?

编辑: 问题似乎是由2个原因造成的。 1)在棒棒糖前app:pressedTranslationZ="12dp"向下移动FAB(如边缘顶部,在棒棒糖中它不再作为边缘顶部工作,蝙蝠改变按压状态的高度。
2)按钮放置在高程4(工具栏)的布局下,我尝试为FAB设置不同的app:elevationandroid:elevation,但它不会改变任何内容。

3 个答案:

答案 0 :(得分:1)

首先,API 20是Kitkat 4.4.2,而21+是Lollipop,23 +是Marshmallow

在您的情况下,它可能隐藏在操作栏后面,尝试检查更改......

Android 4.4和5.0中使用FAB的保证金问题 - Lollipop存在保证金问题。要解决此问题,请为API 21+定义16dp的顶部和右边距,并为前棒棒糖定义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/

答案 1 :(得分:1)

尝试在FrameLayout之前或甚至在RelativeLayout之前移动FAB在xml中。当我将DrawerLayout添加到我的xml文件时,我遇到了类似的问题。当我在xml文件中的DrawerLayout之前移动FAB时,FAB显示了。

答案 2 :(得分:0)

增加高程值。它可能在另一个UI元素后面分层。

在Lollipop及以上版本中,高程控制将绘制元素的“图层”。