如何禁用 BottomNavigationView 点击和触摸?
How to disable BottomNavigationView click and Touch?
我想在 底部视图 无法点击的特定条件下实现行为,我想在点击底部视图项目时它不会导航到该项目但仍然停留在当前项目
<android.support.design.widget.BottomNavigationView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:contextClickable="false"/>
试试这个 code.it 禁用点击。
动态使用 Java pr Kotlin 你可以禁用点击。
bottomView.setEnabled(false);
bottomView.setFocusable(false);
bottomView.setFocusableInTouchMode(false);
bottomView.setClickable(false);
bottomView.setContextClickable(false);
bottomView.setOnClickListener(null);
将 onClick 监听器设置为 Null 有助于禁用点击事件
bottomView.menu.forEach { it.isEnabled = false }
您可以设置其子视图的触摸监听器。使用 android-ktx 的示例:
bottomNav.children.forEach {
(it as? ViewGroup)?.children?.forEach {
it.setOnTouchListener { _, _ -> true } // or null to enable touch again
}
}
如果您想禁用底部导航视图,您可以禁用菜单项
private void enableBottomBar(boolean enable){
for (int i = 0; i < mBottomMenu.getMenu().size(); i++) {
mBottomMenu.getMenu().getItem(i).setEnabled(enable);
}
}
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);
}
}
}
}
Kotlin 风格单行代码:
bottom_navigation.menu.forEach { it.isEnabled = false }
你可以这样做
bottomNavigation.menu.iterator().forEach { it.isEnabled = !error }
我想在 底部视图 无法点击的特定条件下实现行为,我想在点击底部视图项目时它不会导航到该项目但仍然停留在当前项目
<android.support.design.widget.BottomNavigationView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:contextClickable="false"/>
试试这个 code.it 禁用点击。
动态使用 Java pr Kotlin 你可以禁用点击。
bottomView.setEnabled(false);
bottomView.setFocusable(false);
bottomView.setFocusableInTouchMode(false);
bottomView.setClickable(false);
bottomView.setContextClickable(false);
bottomView.setOnClickListener(null);
将 onClick 监听器设置为 Null 有助于禁用点击事件
bottomView.menu.forEach { it.isEnabled = false }
您可以设置其子视图的触摸监听器。使用 android-ktx 的示例:
bottomNav.children.forEach {
(it as? ViewGroup)?.children?.forEach {
it.setOnTouchListener { _, _ -> true } // or null to enable touch again
}
}
如果您想禁用底部导航视图,您可以禁用菜单项
private void enableBottomBar(boolean enable){
for (int i = 0; i < mBottomMenu.getMenu().size(); i++) {
mBottomMenu.getMenu().getItem(i).setEnabled(enable);
}
}
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);
}
}
}
}
Kotlin 风格单行代码:
bottom_navigation.menu.forEach { it.isEnabled = false }
你可以这样做
bottomNavigation.menu.iterator().forEach { it.isEnabled = !error }