如何禁用BottomNavigationView点击并触摸?

时间:2017-10-03 08:04:35

标签: android behavior bottomnavigationview

我想在某些情况下实施底部视图无法点击的行为,我想如果底部视图项目被点击它不会导航到该项目但仍保留在当前项目

this is my bottom view layout

5 个答案:

答案 0 :(得分:5)

科特林风格的单缸纸:

bottom_navigation.menu.forEach { it.isEnabled = false }

答案 1 :(得分:2)

<android.support.design.widget.BottomNavigationView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="false"
    android:contextClickable="false"/>

试试此代码。禁用点击。

动态使用Java pr Kotlin,您可以禁用click。

    bottomView.setEnabled(false); 
    bottomView.setFocusable(false); 
    bottomView.setFocusableInTouchMode(false);
    bottomView.setClickable(false); 
    bottomView.setContextClickable(false);
    bottomView.setOnClickListener(null);

将onClick Listener设置为Null有助于禁用单击事件

答案 2 :(得分:1)

如果要禁用底部导航视图,则可以禁用菜单项

private void enableBottomBar(boolean enable){
    for (int i = 0; i < mBottomMenu.getMenu().size(); i++) {
        mBottomMenu.getMenu().getItem(i).setEnabled(enable);
    }
}

答案 3 :(得分:0)

您可以设置其子视图的触控侦听器。使用android-ktx的示例:

bottomNav.children.forEach {
   (it as? ViewGroup)?.children?.forEach {
       it.setOnTouchListener { _, _ -> true } // or null to enable touch again
   }
}

答案 4 :(得分:0)

public class CustomBottomNavigationView extends BottomNavigationView {

    ...

    @Override
    public void setEnabled(boolean enabled) {
        super.setEnabled(enabled);
        ViewGroup menuView = (ViewGroup) getChildAt(0);
        if (menuView != null) {
            for (int i = 0; i < menuView.getChildCount(); i++) {
                menuView.getChildAt(i).setEnabled(enabled);
            }
        }
    }
}