1

有大量的 SO 线程说他们的按钮显示为一个错误的正方形

方形浮动动作按钮

带有 Android 设计库的 Square FloatingActionButton

显示为正方形的浮动操作按钮

但是我的目标是使用方形按钮。我怎么把它circle floating action button变成方形的?

<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"     
        android:backgroundTint="@color/standardBlue"
        app:srcCompat="@drawable/ic_3d_model"/>
4

3 回答 3

6

您可以使用该属性FloatingActionButton在材料组件库中与官方一起完成。shapeAppearanceOverlay

只需使用:

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        app:shapeAppearanceOverlay="@style/fab_square"

<style name="fab_square" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">0dp</item>
</style>

在此处输入图像描述

于 2020-07-20T06:14:49.383 回答
0

您最好使用 Robertlevonyan 的这个库customFloatingActionButton

<com.robertlevonyan.examples.customfloatingactionbutton.view.FloatingLayout
        android:id="@+id/floating_layout"
        app:fabType="square"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
于 2020-07-20T03:23:56.993 回答
0

FloatingActionButton除了看到这个请求shapes之外不提供:允许设置 FAB 的形状rounded

然而,除此之外还有很多方法可以做到,但我个人推荐的一种方法是使用customFloatingActionButtonrobertlevonyan,它易于使用且可自定义。

正方形

将以下代码行添加到您的模块(应用程序)级别的 Gradle 文件中

implementation 'com.robertlevonyan.view:CustomFloatingActionButton:3.0.1'

现在将以下代码添加到activity_main.xml

<com.robertlevonyan.views.customfloatingactionbutton.FloatingActionButton
       android:id="@+id/custom_fab"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="bottom|end" />

您也可以通过添加在 XML 中自定义它,app:fabType="square"但我更喜欢 MainActivity.java

然后floatingactionbutton在自定义MainActivity.java

public class MainActivity extends AppCompatActivity {
    private FloatingActionButton floatingActionButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        floatingActionButton = findViewById(R.id.custom_fab);

        floatingActionButton.setFabType(FabType.FAB_TYPE_SQUARE); //set button type to square
        floatingActionButton.setFabIcon(getResources().getDrawable(R.drawable.ic_baseline_add_btn_24, null));

    }
}

输出

在此处输入图像描述

于 2020-07-20T03:38:52.693 回答