单击/触摸时,浮动操作按钮不响应

时间:2016-03-09 09:29:39

标签: android floating-action-button

我在我的应用程序中使用浮动操作按钮(FAB)来显示Dialogs,当我使用Lopllipop 5.1.1在Xperia Z中测试我的应用程序时,一切都运行正常。
然而,问题是在使用KitKat 4.4.2的ASUS Zenfone 6和使用Jelly Bean 4.2.2的Xperia C中测试我的应用程序时,FAB加载完美但FAB没有显示Dialogs,看起来它没有响应当我触动它。
为了记录,我的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中无效?

3 个答案:

答案 0 :(得分:21)

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

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

致:

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

就像那样简单。

答案 1 :(得分:8)

以编程方式将FAB置于前方也应该有效:

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

答案 2 :(得分:0)

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

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

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