Java 如何使用真正的浮动操作按钮(FAB)扩展?
消除关于复制的任何疑问或想法:on定义为什么是“扩展” 但大多数人把“扩展”和“扩展”混淆了,这使得很难找到解决方案。像 问题 因此,我期待的是如何设置文本和扩展大小的晶圆厂 今天我的代码是这样的:Java 如何使用真正的浮动操作按钮(FAB)扩展?,java,android,floating-action-button,Java,Android,Floating Action Button,消除关于复制的任何疑问或想法:on定义为什么是“扩展” 但大多数人把“扩展”和“扩展”混淆了,这使得很难找到解决方案。像 问题 因此,我期待的是如何设置文本和扩展大小的晶圆厂 今天我的代码是这样的: <android.support.design.widget.FloatingActionButton android:id="@+id/maps_main_distance_btn" android:layout_width="0dp" android:layou
<android.support.design.widget.FloatingActionButton
android:id="@+id/maps_main_distance_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="@string/str_distance_btn"
app:elevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
没有文本,也没有正确的格式。我在约束布局中使用它。简单的答案是:将背景设置为带圆角的矩形,而不是椭圆形。然后将半径的尺寸设置为按钮高度的一半
我是如何做到的:
<android.support.design.widget.FloatingActionButton
android:id="@+id/maps_main_distance_btn"
android:layout_width="@dimen/floating_button_width"
android:layout_height="@dimen/floating_button_height"
android:layout_marginBottom="8dp"
android:background="@drawable/btn_background_expanded"
android:text="@string/str_distance_btn"
app:elevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
drawable/btn_background_expanded.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item>
<shape android:shape="rectangle">
<solid android:color="?android:colorAccent" />
<corners
android:radius="@dimen/floating_button_radius"
/>
</shape>
</item>
</ripple>
您可以使用。(我用了另一种方式)
但我使用了一个按钮,在协调器布局中创建了一个圆形的很棒的按钮,如下所示:
<mehdi.sakout.fancybuttons.FancyButton
android:id="@+id/actMain_btnCompare"
app:layout_behavior="@string/fab_transformation_sheet_behavior"
android:layout_width="125dp"
android:layout_height="38dp"
android:layout_gravity="bottom|center"
android:layout_margin="20dp"
android:elevation="3dp"
android:padding="2dp"
fancy:fb_borderColor="@color/white"
fancy:fb_borderWidth="3dp"
fancy:fb_defaultColor="@color/colorPrimaryDark"
fancy:fb_radius="20dp"
fancy:fb_text="مقایسه محصول"
fancy:fb_textColor="@color/white"
fancy:fb_textGravity="center"
fancy:fb_textSize="13sp" />
结果是:
其中可以包含图标(请参阅)
使用app:layout\u behavior=“@string/fab\u transformation\u sheet\u behavior”
它的行为类似于fab,如下所示:
<mehdi.sakout.fancybuttons.FancyButton
android:id="@+id/actMain_btnCompare"
app:layout_behavior="@string/fab_transformation_sheet_behavior"
android:layout_width="125dp"
android:layout_height="38dp"
android:layout_gravity="bottom|center"
android:layout_margin="20dp"
android:elevation="3dp"
android:padding="2dp"
fancy:fb_borderColor="@color/white"
fancy:fb_borderWidth="3dp"
fancy:fb_defaultColor="@color/colorPrimaryDark"
fancy:fb_radius="20dp"
fancy:fb_text="مقایسه محصول"
fancy:fb_textColor="@color/white"
fancy:fb_textGravity="center"
fancy:fb_textSize="13sp" />
祝你好运。
您可以创建一个实用程序类,使用ConstraintLayout
将MaterialButton
动画化为扩展的FloatingActionButton
。首先需要在xml中声明MaterialButton
的两种状态,然后使用TransitionManager
在它们之间设置动画
你可以阅读一篇关于它的中篇文章,同时,我会在这里添加一些相关的代码
折叠的晶圆厂状态:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout android:id="@+id/extend_fab_container"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_fab"
android:elevation="8dp">
<android.support.design.button.MaterialButton
android:id="@+id/fab"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
android:layout_width="56dp"
android:layout_height="56dp"
app:cornerRadius="56dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
在Gradle文件中添加依赖项:
在xml文件中:
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_margin="@dimen/fab_margin"
android:text="Create"
app:icon="@drawable/outline_home_24" />
在您链接的页面上显示,Android扩展晶圆厂尚未推出。也许可以尝试使用自定义视图来近似效果。@LeoAso但这只是一个示例,对吗?我得到的是,他们还没有做一个代码示例,但它已经存在了……我不这么认为。似乎页面链接到组件的实际实现,而不仅仅是示例。如果您检查标记为“代码可用”的链接,您将看到组件的文档。如果你点击安卓链接,你会看到它还没有实现。它刚刚作为计划工作添加到安卓材料组件库中,你可以看到Github中提出的问题-我现在尝试过,但没有成功。你能说你用的是什么硬币吗?如果你有结果的图片?谢谢,这不是一个解决办法。Android不会让你像这个家伙那样为FAB定义自定义背景。他可能认为它会像其他观点一样适用于FAB,但不是:)@FARID谢谢,我没有把这当作解决方案,我甚至说这对我来说不起作用me@CanatovI不是指你。我是说那个贴了这个答案的人我看到了,但是当一条snackBar信息出现时,这是什么行为?它向上移动?覆盖信息还是被覆盖?@Canato晶圆厂将像支持库中的晶圆厂一样向上移动我不明白的是,为什么你不简单地使用材料设计的延伸library@FARID如果你注意回答的日期,你可以看到还没有发射。给这个人一枚奖章!!别忘了把MaterialComponents作为主题,比如“theme.MaterialComponents.NoActionBar”太棒了!谢谢你!如果您的活动主题未继承“theme.MaterialComponents.NoActionBar”,则必须将android:theme=“@style/theme.MaterialComponents.NoActionBar”作为按钮的属性。否则,可能会出现布局充气例外情况。这似乎不适用于材质v1.1.0
(无alpha)或更新版本(我尝试了v1.2.1
)。为什么我需要1.1.0-alpha04
才能工作?是否有任何地方我可以验证/检查是否有新的实现我可以使用,包括这一点?
private void setExtended(boolean extended, boolean force) {
if (isAnimating || (extended && isExtended() && !force)) return;
ConstraintSet set = new ConstraintSet();
set.clone(container.getContext(), extended ? R.layout.fab_extended : R.layout.fab_collapsed);
TransitionManager.beginDelayedTransition(container, new AutoTransition()
.addListener(listener).setDuration(150));
if (extended) button.setText(currentText);
else button.setText("");
set.applyTo(container);
}
implementation 'com.google.android.material:material:1.1.0-alpha04'
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_margin="@dimen/fab_margin"
android:text="Create"
app:icon="@drawable/outline_home_24" />