【问题标题】:How do I customize a Floating Action Button shape?如何自定义浮动操作按钮形状?
【发布时间】:2020-05-11 02:21:55
【问题描述】:

我正在尝试创建具有自定义形状的自定义 FAB。我尝试将android: backgroundshapeAppearanceOverlayshapeAppearance 属性一起设置,但仍然没有运气。

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/edit_score_fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:shapeAppearance="@drawable/edit_score_fab"
            app:shapeAppearanceOverlay="@drawable/edit_score_fab"
            android:background="@drawable/edit_score_fab"/>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <size
        android:height="5dp"
        android:width="10dp"/>
    <corners android:bottomLeftRadius="4dp" />
    <solid android:color="@color/color_primary"/>
</shape>

我的结果

我想要什么

【问题讨论】:

  • 不要为此使用 FloatingActionButton,如果您想设置自定义背景可绘制对象,只需使用 Button。
  • 来自 Google 的 Material Components 库(不是 Jetpack)允许形状主题化。我还没有这样做,但它可能有助于定义不同的形状,将其放入样式中,然后将该样式应用于您的按钮。 github.com/material-components/material-components-android

标签: android android-button floating-action-button material-components-android material-components


【解决方案1】:

如果您想要一个可扩展的完全可定制的 FAB:

首先下载我的库Viper Pack并安装到你的项目中。

其次,转到您的活动onCreate 循环并使用 Lava 类中的Lava.app.addLavaFab(...) 方法添加它:

简单的熔岩工厂:

Lava.app.addLavaFab(Context c, int imgres, String text, View.OnClickListener lis) 允许您在应用中添加简单的图像和文本 lava fab,imgres 是资源中的 fab 图像,text 是 fab 文本。

Lava.app.addLavaFab(Context c, int imgres, String text, String gravity, View.OnClickListener lis) 让你可以在你的应用程序中添加一个简单的图像和文本 lava fab,gravity 是 fab 位置,可以是 Lava.FabPosition.LEFT 或 Lava.FabPosition.RIGHT 或 Lava.FabPosition.CENTER,imgres 是来自资源和文本的工厂图像是工厂文本。

Lava.app.addLavaFab(Context c, Drawable d, String text, View.OnClickListener lis) 允许您在应用程序中添加简单的图像和文本 lava fab,d 是将 fab 图像作为可绘制对象,而 text 是 fab 文本。

Lava.app.addLavaFab(Context c, Drawable d, String text, String gravity, View.OnClickListener lis) 让您可以在应用程序中添加简单的图像和文本熔岩 fab,重力是 fab 位置,它可以是 Lava.FabPosition.LEFTLava.FabPosition.RIGHTLava.FabPosition.CENTER,d 是作为可绘制的 fab 图像和文本是工厂文本。

您可以使用 Lava.app.fabtextLava.app.fabimage 获得简单的 lava fab textview 和 imageview。

自定义熔岩工厂:

Lava.app.addLavaFab(Context c, View fixedview, View hiddenview, View.OnClickListener lis) 让你可以在你的应用中添加一个自定义的熔岩晶圆厂,fixedview 是晶圆厂中始终出现的视图,它可以是图像,抽签动画,任何东西; hiddenview 是仅在用户按下 fab 时出现的隐藏视图,它可以是文本或其他任何内容。

Lava.app.addLavaFab(Context c, View fixedview, View hiddenview, String gravity, View.OnClickListener lis) 允许你在你的应用程序中添加一个自定义的熔岩晶圆厂,固定视图是晶圆厂中始终出现的视图,它可以是图像、抽签动画,任何东西; hiddenview是只有在用户按下fab时才会出现的隐藏视图,它可以是文本或其他任何东西,gravity是fab位置,它可以是Lava.FabPosition.LEFTLava.FabPosition.RIGHTLava.FabPosition.CENTER

您可以通过Lava.app.fab 将熔岩工厂本身作为 LinearLayout 获取。

很容易添加,试一试并分享给其他人:)

【讨论】:

    【解决方案2】:

    您可以使用具有自定义形状外观的 ExtendedFloatingActionButton
    比如:

    <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
        app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlayExtended"
        ../>
    

    与:

      <style name="ShapeAppearanceOverlayExtended" parent="">
        <item name="cornerFamily">rounded</item>
        <item name="cornerSize">0dp</item>
        <item name="cornerSizeTopLeft">50%</item>
      </style>
    

    【讨论】:

      猜你喜欢
      • 2019-12-15
      • 1970-01-01
      • 2020-01-11
      • 2019-12-04
      • 1970-01-01
      • 2021-02-08
      • 2018-08-21
      • 2016-07-27
      相关资源
      最近更新 更多