FloatingActionButton库中的多个按钮

时间:2015-08-11 17:53:47

标签: android material-design floating-action-button

您好我试图通过makovkastar实现[FloatingActionButton] [1]库。 (因为它是向后兼容的。它适用于单个FAB,但是当添加2个按钮时," List"似乎只附加到一个按钮。

fragment_listview.xml

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:fab="http://schemas.android.com/apk/res-auto"
             android:layout_width="match_parent"
             android:layout_height="match_parent">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="@android:color/transparent"
        android:headerDividersEnabled="false"/>

    <com.melnykov.fab.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/ic_add_white_24dp"
        fab:fab_colorNormal="@color/accent"
        fab:fab_colorPressed="@color/accent_pressed"
        fab:fab_colorRipple="@color/ripple"/>

    <com.melnykov.fab.FloatingActionButton
        android:id="@+id/fab2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|left"
        android:layout_margin="16dp"
        android:src="@drawable/ic_add_white_24dp"
        fab:fab_colorNormal="@color/accent"
        fab:fab_colorPressed="@color/accent_pressed"
        fab:fab_colorRipple="@color/ripple"/>
</FrameLayout>

MainActivity ListViewFragment类

public static class ListViewFragment extends Fragment {

        @SuppressLint("InflateParams")
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View root = inflater.inflate(R.layout.fragment_listview, container, false);

            ListView list = (ListView) root.findViewById(android.R.id.list);
            ListViewAdapter listAdapter = new ListViewAdapter(getActivity(),
                    getResources().getStringArray(R.array.countries));
            list.setAdapter(listAdapter);

            FloatingActionButton fab = (FloatingActionButton) root.findViewById(R.id.fab);
            fab.attachToListView(list);

            FloatingActionButton fab2 = (FloatingActionButton) root.findViewById(R.id.fab2);
            fab2.attachToListView(list);



            return root;
        }

这是that library中提供的相同代码示例:

滚动列表时,向下滚动时只有一个按钮(在这种情况下为 fab2 )变为不可见。我希望两个按钮都能反应滚动。

任何人都知道如何做到这一点?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以通过制作片段实现com.melnykov.fab.ScrollDirectionListener(也来自与工厂相同的包)来自行完成。

public static class ListViewFragment extends Fragment implements
    com.melnykov.fab.ScrollDirectionListener {

    private FloatingActionButton fab, fab2;

    @SuppressLint("InflateParams")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_listview, container, false);

        ListView list = (ListView) root.findViewById(android.R.id.list);
        ListViewAdapter listAdapter = new ListViewAdapter(getActivity(),
                    getResources().getStringArray(R.array.countries));
        list.setAdapter(listAdapter);

        fab = (FloatingActionButton) root.findViewById(R.id.fab);
            // this method expects a ScrollDirectionListener as second arg
            // so use this for that parameter
            fab.attachToListView(list, this);

        fab2 = (FloatingActionButton) root.findViewById(R.id.fab2);
            fab2.attachToListView(list, this);

            return root;
        }

    @Override
    public void onScrollDown() {
        if (fab.isVisible() || fab2.isVisible()) {
            fab.hide();
            fab2.hide();
        }
    }

    @Override
    public void onScrollUp() {
        if (!fab.isVisible() || !fab2.isVisible()) {
            fab.show();
            fab2.show();
        }
    }
}

我确信这应该可行,但如果没有,你应该open an issue向开发人员提出这个可能的错误。

注意

Android现在在FloatingActionButton中拥有自己的design library(以及更多)的实现。用它包含在你的项目中:

compile 'com.android.support:design:22.2.0'

以下是使用新FAB和列表的excellent guide;它甚至包括使用新的CoordinatorLayout,它应该取代滚动侦听器和

的需要