如何禁用底栏中已选择的项目

时间:2016-04-30 20:34:11

标签: android menu android-actionbar

menu_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
    android:id="@+id/checkin_item"
    android:icon="@drawable/ic_nearby"
    android:title="CheckIn"
    android:orderInCategory="100"
    app:showAsAction="always"/>
    <item
    android:id="@+id/message_item"
    android:icon="@drawable/ic_message"
    android:title="Message"
    android:orderInCategory="100"
    app:showAsAction="always"/>
    <item
    android:id="@+id/friends_item"
    android:icon="@drawable/ic_friends"
    android:title="Friend"
    android:orderInCategory="100"
    app:showAsAction="always"/>
    <item
    android:id="@+id/notification_item"
    android:icon="@drawable/ic_notifications"
    android:title="Notification"
    android:orderInCategory="100"
    app:showAsAction="always"/>

Activiy

    bottomBar = BottomBar.attach(findViewById(R.id.navigation_view), savedInstanceState);

    bottomBar.setItemsFromMenu(R.menu.menu_bottom, new OnMenuTabClickListener() {
        @Override
        public void onMenuTabSelected(int itemId) {
            switch (itemId) {
                case R.id.checkin_item:
                    Snackbar.make(drawerLayout, "Recent Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                case R.id.message_item:
                    Snackbar.make(drawerLayout, "Favorite Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                case R.id.friends_item:
                    Snackbar.make(drawerLayout, "Location Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                case R.id.notification_item:
                    Snackbar.make(drawerLayout, "Location Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                default:
                    bottomBar.setSelected(false);
                    bottomBar.clearFocus();
                    break;
            }
        }
        @Override
        public void onMenuTabReSelected(int itemId) {
            switch (itemId) {
                case R.id.checkin_item:
                    Snackbar.make(drawerLayout, "Recent Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                case R.id.message_item:
                    Snackbar.make(drawerLayout, "Favorite Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                case R.id.friends_item:
                    Snackbar.make(drawerLayout, "Location Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                case R.id.notification_item:
                    Snackbar.make(drawerLayout, "Location Item Selected", Snackbar.LENGTH_LONG).show();
                    break;
                default:
                    bottomBar.setSelected(false);
                    bottomBar.clearFocus();
                    break;
            }
        }

问题

Bottombar已经被选中了第一项。我想禁用它。因此,当应用程序运行时,没有选择任何内容。

https://github.com/roughike/BottomBar/blob/master/README.md#common-problems-and-solutions

使用此底栏。

2 个答案:

答案 0 :(得分:3)

现在你必须做以下两种解决方法中的任何一种,我猜。

1)使用以下方法选择其他默认选项卡:

bottomBar.setDefaultTabPosition(someIndexOfYOurChoiceFromMenuItems);

例如:你可以设置

bottomBar.setDefaultTabPosition(1);

默认选择标签中的第二项:

<item android:id="@+id/message_item"
android:icon="@drawable/ic_message"
android:title="Message"
android:orderInCategory="100"
app:showAsAction="always"/>

2)为一个保持不可见的标签添加一个虚拟菜单项

添加:

<item android:id="@+id/none"
android:title=""/>

在其他项目之前。这使它成为默认选中的第一个项目。

答案 1 :(得分:1)

在您的活动Oncreate

bottom_navigation_bar.setOnTabSelectListener(this);
bottom_navigation_bar.setOnTabReselectListener(this);

然后:

public void onTabSelected(@idres int tabId) {
    if (bottom_navigation_bar.getRootView().findViewById(tabId).isPressed()){
        switch (tabId) {
            case R.id.tab_home:
                break;
            case R.id.something:
                break;
            case R.id.something:
                break;
            case R.id.something:
                break;
        }
    }
}

并在onTabReSelectedmethod上添加第一个标签:

@override
    public void onTabReSelected(int tabId) {
        switch (tabId) {
            case R.id.tab_home:
                break;
    }
}