我在应用程序中使用浮动动作按钮(FAB)来显示对话框,当我使用Lopllipop 5.1.1在Xperia Z中测试我的应用程序时,一切工作正常。
但是,问题是,当我在使用KitKat 4.4.2的ASUS Zenfone 6和使用Jelly Bean 4.2.2的Xperia C中测试我的应用程序时,FAB加载得很好,但是FAB没有显示对话框,似乎当我没有响应时感动了。
作为记录,我的最低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。通过以某种方式通过在listView的声明之后重新定位FAB的声明,可以解决此问题。
从:
<android.support.design.widget.FloatingActionButton
...
...
.../>
<ListView
...
...
.../>
到:
<ListView
...
...
.../>
<android.support.design.widget.FloatingActionButton
...
...
.../>
就这么简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句