【问题标题】:Floating Action Button does not responds when it clicked/touched浮动操作按钮在单击/触摸时不响应
【发布时间】:2016-06-23 14:17:08
【问题描述】:

我在我的应用程序中使用浮动操作按钮 (FAB) 来显示对话框,当我在 Xperia Z 中使用 Lopllipop 5.1.1 测试我的应用程序时,一切正常。
但是,问题是当我在 ASUS Zenfone 6 中使用 KitKat 4.4.2 和在 Xperia C 中使用 Jelly Bean 4.2.2 测试我的应用程序时,FAB 加载完美,但 FAB 不显示对话框,似乎当我没有响应时摸了摸。
作为记录,我的 min sdk 版本是 16。

我想问的是为什么会这样?我的代码有什么问题,或者可能是 android 版本或 API 级别有什么问题吗?

请看一下我的代码。这里是 XML 代码:

    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:src="@drawable/ic_add_account"
    android:visibility="invisible"
    android:clickable="true"/>

以及我如何声明和设置 FAB 的侦听器:

FloatingActionButton fab;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

   fab = (FloatingActionButton) getActivity().findViewById(R.id.fab);

   ...
   fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDialog();
            }
   });
   ...
}

让我感到困惑的是它在 Xperia Z 中是如何工作的,但在华硕 Zenfone 6 中却没有?

【问题讨论】:

  • 原来问题出在我在listview之前声明FAB的XML文件中,通过在listview之后删除FAB的声明,它解决了我的问题。
  • 您确实应该添加上述评论作为您自己问题的答案,因为它确实是解决此问题的方法。我遇到了同样的问题,在我的情况下,它是 RecyclerView,然后是 FAB,然后是 NestedScrollView。将 FAB 移到 NestedScrollView 下方,触摸/单击事件开始工作。好电话。
  • @Andrew 我希望将我的评论作为答案并在我的问题上加上 SOLVED 标记,但我真的不知道该怎么做。好伤心……
  • 我猜只是手动将评论文本复制粘贴到添加答案字段中。试试看。
  • @Andrew god...它一直都在那里

标签: android floating-action-button


【解决方案1】:

这里的问题是我在声明listView之前声明了FAB。不知何故,通过在 listView 声明之后重新定位 FAB 的声明,它将解决问题。
来自:

<android.support.design.widget.FloatingActionButton
    ...
    ...
    .../>
<ListView
    ...
    ...
    .../>

收件人:

<ListView
    ...
    ...
    .../>
<android.support.design.widget.FloatingActionButton
    ...
    ...
    .../>

就这么简单。

【讨论】:

  • 当我使用 Kotlin Synthetics(和 findViewById)时,我不得不将 FAB 放在 ListView 上方。但是现在 Kotlin Synthetics 已被弃用并且我迁移到 Android ViewBinding,我必须将 FAB 移到 ListView 下方才能使其工作。我当时想,这里发生了什么。
  • 伙计,非常感谢您发现问题!它对我很有用!这个问题让我抓狂!我找不到问题。不过多亏了你,现在解决了!
【解决方案2】:

以编程方式将 FAB 置于前面也应该可以工作:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.bringToFront();
fab.setOnClickListener... //etc

【讨论】:

  • 是的,它起作用了,但这里的问题是为什么它在 API 19 上不起作用,而它在 API 19 上起作用??
【解决方案3】:

只需在 xml 文件中的 FAB(浮动操作按钮)中添加可点击和可聚焦并将两者都设置为“true”

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:clickable="true"
    android:focusable="true"
    />

这使浮动按钮能够接收点击事件并使其可点击

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2017-08-02
    • 2018-07-04
    相关资源
    最近更新 更多