如何实现三个并排的浮动操作按钮(Android XML)
How to implement three floating action buttons next to each other (Android XML)
我将大的 FloatingActionButton 放在中间,我想在中间那个旁边放置 2 个额外的浮动按钮。示例图片中的红色矩形。我可以使用什么选项来实现这个?
layout.xml
<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">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:padding="20dp">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:clickable="true"
app:fabSize="mini" />
<TextView
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignRight="@id/floatingActionButton3"
android:layout_marginRight="-8dp"
android:background="@drawable/circle"
android:elevation="10dp"
android:text="2"
android:textAlignment="center"
android:textColor="#fff"
android:textSize="16sp" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:clickable="true"
app:fabSize="auto" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:clickable="true"
app:fabSize="mini" />
<TextView
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignRight="@id/floatingActionButton"
android:layout_marginRight="-8dp"
android:background="@drawable/circle"
android:elevation="10dp"
android:text="3"
android:textAlignment="center"
android:textColor="#fff"
android:textSize="16sp" />
</RelativeLayout>
</RelativeLayout>
@drawable/circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/colorRedDark" />
</shape>
您可以通过多种方式做到这一点。这是使用约束布局的解决方案。
activity_map.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/linearLayout">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="bottom|end"
app:elevation="6dp"
android:background="@drawable/round_dark_gray"
app:pressedTranslationZ="12dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:text="AR"
android:textSize="28sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:id="@+id/textView"
app:layout_constraintTop_toTopOf="@+id/fab" app:layout_constraintStart_toStartOf="@+id/fab"
app:layout_constraintBottom_toBottomOf="@+id/fab" app:layout_constraintEnd_toEndOf="@+id/fab"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab2"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="bottom|end"
app:elevation="6dp"
android:background="@drawable/round_dark_gray"
app:pressedTranslationZ="12dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintEnd_toStartOf="@+id/fab"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab3"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="bottom|end"
app:elevation="6dp"
android:background="@drawable/round_dark_gray"
app:pressedTranslationZ="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="8dp"
app:layout_constraintStart_toEndOf="@+id/fab" android:layout_marginStart="8dp"/>
<TextView
android:text="P"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
app:layout_constraintTop_toTopOf="@+id/fab2" app:layout_constraintBottom_toBottomOf="@+id/fab2"
app:layout_constraintEnd_toEndOf="@+id/fab2" app:layout_constraintStart_toStartOf="@+id/fab2"/>
<TextView
android:text="A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView3"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
app:layout_constraintTop_toTopOf="@+id/fab3" app:layout_constraintBottom_toBottomOf="@+id/fab3"
app:layout_constraintStart_toStartOf="@+id/fab3" app:layout_constraintEnd_toEndOf="@+id/fab3"/>
</androidx.constraintlayout.widget.ConstraintLayout>
在 res->drawable 文件夹中创建 round_dark_gray.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@android:color/darker_gray"/>
</shape>
您可以根据需要创建可绘制背景。
我将大的 FloatingActionButton 放在中间,我想在中间那个旁边放置 2 个额外的浮动按钮。示例图片中的红色矩形。我可以使用什么选项来实现这个?
layout.xml
<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">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:padding="20dp">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:clickable="true"
app:fabSize="mini" />
<TextView
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignRight="@id/floatingActionButton3"
android:layout_marginRight="-8dp"
android:background="@drawable/circle"
android:elevation="10dp"
android:text="2"
android:textAlignment="center"
android:textColor="#fff"
android:textSize="16sp" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:clickable="true"
app:fabSize="auto" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:clickable="true"
app:fabSize="mini" />
<TextView
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignRight="@id/floatingActionButton"
android:layout_marginRight="-8dp"
android:background="@drawable/circle"
android:elevation="10dp"
android:text="3"
android:textAlignment="center"
android:textColor="#fff"
android:textSize="16sp" />
</RelativeLayout>
</RelativeLayout>
@drawable/circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/colorRedDark" />
</shape>
您可以通过多种方式做到这一点。这是使用约束布局的解决方案。
activity_map.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/linearLayout">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="bottom|end"
app:elevation="6dp"
android:background="@drawable/round_dark_gray"
app:pressedTranslationZ="12dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:text="AR"
android:textSize="28sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:id="@+id/textView"
app:layout_constraintTop_toTopOf="@+id/fab" app:layout_constraintStart_toStartOf="@+id/fab"
app:layout_constraintBottom_toBottomOf="@+id/fab" app:layout_constraintEnd_toEndOf="@+id/fab"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab2"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="bottom|end"
app:elevation="6dp"
android:background="@drawable/round_dark_gray"
app:pressedTranslationZ="12dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintEnd_toStartOf="@+id/fab"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab3"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="bottom|end"
app:elevation="6dp"
android:background="@drawable/round_dark_gray"
app:pressedTranslationZ="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="8dp"
app:layout_constraintStart_toEndOf="@+id/fab" android:layout_marginStart="8dp"/>
<TextView
android:text="P"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
app:layout_constraintTop_toTopOf="@+id/fab2" app:layout_constraintBottom_toBottomOf="@+id/fab2"
app:layout_constraintEnd_toEndOf="@+id/fab2" app:layout_constraintStart_toStartOf="@+id/fab2"/>
<TextView
android:text="A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView3"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
app:layout_constraintTop_toTopOf="@+id/fab3" app:layout_constraintBottom_toBottomOf="@+id/fab3"
app:layout_constraintStart_toStartOf="@+id/fab3" app:layout_constraintEnd_toEndOf="@+id/fab3"/>
</androidx.constraintlayout.widget.ConstraintLayout>
在 res->drawable 文件夹中创建 round_dark_gray.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@android:color/darker_gray"/>
</shape>
您可以根据需要创建可绘制背景。