首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段中的minifab浮动操作按钮不可单击

片段中的minifab浮动操作按钮不可单击
EN

Stack Overflow用户
提问于 2018-08-30 06:11:30
回答 1查看 412关注 0票数 0

我在一个片段中有一个浮动的动作按钮,里面有3个其他的迷你标签,它们在弧形中动画出来。main FAB工作正常,并在miniFabs上调用动画,但由于某些原因,miniFabs不可点击。我可以轻松访问所有的Fab,但不能访问minifabs的setOnClickListener()。布局如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:fitsSystemWindows="true">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical|center_horizontal"
        android:text="@string/chatter"
        android:textColor="@color/black" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_chatter_video"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/fab_first_menu_item_margin_bottom"
        android:layout_marginEnd="@dimen/right_margin"
        android:clickable="true"
        android:focusable="true"
        android:visibility="visible"
        app:backgroundTint="@color/white"
        app:fabSize="mini"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:srcCompat="@drawable/ic_chatter_new_video"
        android:fitsSystemWindows="true" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_chatter_open"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/fab_bottom_margin"
        android:layout_marginEnd="@dimen/fab_main_right_margin"
        android:clickable="true"
        android:focusable="true"
        android:visibility="visible"
        app:backgroundTint="@color/colorPrimary"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:fabSize="normal"
        app:srcCompat="@drawable/ic_chatter_new" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_chatter_photo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/fab_first_menu_item_margin_bottom"
        android:layout_marginEnd="@dimen/right_margin"
        android:clickable="true"
        android:focusable="true"
        android:visibility="visible"
        app:backgroundTint="@color/white"
        app:fabSize="mini"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:srcCompat="@drawable/ic_chatter_new_photo" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_chatter_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/fab_first_menu_item_margin_bottom"
        android:layout_marginEnd="@dimen/right_margin"
        android:clickable="true"
        android:focusable="true"
        android:visibility="visible"
        app:backgroundTint="@color/white"
        app:fabSize="mini"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:srcCompat="@drawable/ic_chatter_new_text" />

    <LinearLayout
        android:id="@+id/main_chatter_overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:alpha="0.45"
        android:orientation="vertical"
        android:visibility="invisible"
        android:background="@color/mainColor"
        />

</android.support.constraint.ConstraintLayout>

我正在用这个代码动画fab_chatter_open,它工作得很好。单击动画和全部:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >
    <rotate android:fromDegrees="45"
        android:toDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="300"
        android:interpolator="@android:anim/linear_interpolator"/>
</set>

并在第二次单击FAB时反转此动画。

然后,我将使用此代码为miniFabs设置动画。miniFabs上的动画运行良好,但FAB无法以任何方式单击:

代码语言:javascript
复制
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true" >

    <translate android:fromXDelta="82%p" android:toXDelta="65%p"
        android:fromYDelta="7%p" android:toYDelta="7%p"
        android:duration = "100"/>
    <alpha android:fromAlpha="0"
        android:toAlpha="1"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="100"/>
</set>

您还会注意到底部有一个Linearlayout。这是为了用50%的alpha覆盖recyclerView,以保持对fabs的关注,并使内容变暗。不幸的是,它没有像我喜欢的那样覆盖动作栏或底部导航。如果你也有实现这个目标的建议,请让我知道。

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 10:19:09

显然,在受约束的布局中,当您使用translate设置浮动动作按钮的动画时,按钮的单击停留在创建和放大视图时FAB最初绘制的位置。我决定改为使用我的miniFabs浮动操作按钮上的页边距底部和页边距末端:

代码语言:javascript
复制
android:layout_marginBottom=""
android:layout_marginEnd=""

当视图最初相对于主FAB进行绘制和放大时,将浮动操作按钮放在屏幕上我想要的位置。另外,由于这是一个受约束的布局,因此我使用:

app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"

将按钮放在主FAB所在的右下角,否则这些miniFabs的边距-底部和边距-顶部将很难计算。

然后我在miniFabs上使用动画alpha和动画scale。这使miniFabs保持在点击事件的相同位置,但为它们提供了一些动画,因此它们有一点天赋。

我还确保在将每个FAB的可见性设置为gone之后,将其isEnabled()属性设置为false,否则单击事件仍将存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52086762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档