【问题标题】:How to remove FloatingActionButton's surrounding shadow?如何去除浮动操作按钮周围的阴影?
【发布时间】:2015-08-17 07:10:05
【问题描述】:

我正在尝试将第三方FloatingActionButton 替换为库com.android.support:design:22.2.0 中打包的the native one。默认外观在图像周围有一个深色阴影,我该如何摆脱它?我知道前者提供了setShadow()的方法,但我只是找不到后者的类似方法。

这是相关的 XML 布局:

<android.support.design.widget.FloatingActionButton
        android:id="@+id/alarm_front"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/btn_icon_alarm_notset" />

我已将其背景颜色设置为黄色。

mAlarmBtn.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.floatButtonColor)));

【问题讨论】:

    标签: android shadow floating-action-button


    【解决方案1】:

    通过添加覆盖 FAB 的默认 elevation

    android:elevation="0dp"
    

    或在代码中调用View.setElevation(float)

    【讨论】:

    • setElevation 在最低 API 级别 21 时可用,它如何在 LOLLIPOP 以下工作?
    • 您可以简单地坚持使用旧方法在 pre-lollipop 上创建自己的 ImageButton。就像你在他们介绍 FAB 之前所做的那样
    • 其他开发人员报告了新支持 FAB 上的阴影问题,尽管通常阴影没有显示出相反的问题,但可能是相关问题。 stackoverflow.com/questions/30532863/…
    • 有了官方FAB,你可以用app:elevation="0dp"做你想做的事。我在 Android 4.1.1 上试过,效果很好。不知道有没有Java解决方案。
    • 使用app:elevation="0dp" 来实现兼容性
    【解决方案2】:

    添加这个

    android:elevation="0dp" app:elevation="0dp"

    会是这样的:

     <android.support.design.widget.FloatingActionButton
            android:id="@+id/floatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_add"
            android:elevation="0dp"
            app:elevation="0dp"
            app:fabSize="normal"
            android:scaleType="fitCenter"/>
    

    【讨论】:

    • 这是所有人的答案
    【解决方案3】:

    通过添加以下内容覆盖 FAB 的默认高度:

    app:elevation="0dp"
    

    【讨论】:

      【解决方案4】:

      将borderWidth设为0

      app:borderWidth="0dp"
      

      【讨论】:

      • 尝试了以上所有方法,但阴影仍然存在......这个答案对我有用!
      【解决方案5】:

      如果您正在使用支持库 - 最新的 Android Studio 模板会用到它们。 检查导入

      import android.support.design.widget.FloatingActionButton;
      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
      //if using support app compat
      fab.setCompatElevation(16.0f);
      

      否则,如果您只支持较新的 sdk 版本

      fab.setElevation();
      //call requires SDK 21
      

      .../app/build.gradle
        minSdkVersion 18    << less than 21 so req support libraries
        targetSdkVersion 25
      

      【讨论】:

        【解决方案6】:

        尝试了上述所有建议,但对于 API 23 及更高版本均无效。我已经完成了这个,它完全消除了阴影:

        app:backgroundTint="@android:color/transparent"
        app:borderWidth="0dp"
        

        下面是我的按钮现在的样子:

        修改前的样子如下:

        【讨论】:

          【解决方案7】:

          此解决方案也适用于 ExtendedFloatingActionButton:

          style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
          

          【讨论】:

            猜你喜欢
            • 2015-08-23
            • 1970-01-01
            • 1970-01-01
            • 2023-03-24
            • 2016-05-05
            • 2016-04-06
            • 2016-07-18
            • 2018-02-28
            • 1970-01-01
            相关资源
            最近更新 更多