标签: bottomnavigationview

使用 setOnNavigationItemSelectedListener 时波纹效果 BottomNavigationView 冻结

当我使用setOnNavigationItemSelectedListener冻结BottomNavigationView波纹效果时,如下面的屏幕截图所示。并且效果状态一直保持这样。

我不明白为什么?

我在用着com.android.support:design:27.1.1

binding = DataBindingUtil
        .setContentView(this, R.layout.activity_main)

bottomBar = binding?.bottomBarNavigation as BottomNavigationView
bottomBar?.setOnNavigationItemSelectedListener {
    when (it.itemId) {
        TabBarObject.TAB_MESSENGER -> replaceFragment(
            MessengerFragment(),
            TabBarObject.TAB_MESSENGER.tabName
        )
        ...
        ...
    }
}

private fun getTabInfo(menuItemId: Int): TabBarObject {
    return when (menuItemId) {
        R.id.tab_messenger -> TabBarObject.TAB_MESSENGER
        ...
        ...
        else -> throw IllegalArgumentException("UNKNOWN TAB BAR TYPE")
    }
}

private fun replaceFragment(fragment: Fragment, tag: String): Boolean {
    val ft = supportFragmentManager.beginTransaction()

    ft.replace(R.id.frame_layout, fragment, tag)
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
    ft.commitAllowingStateLoss()
    return true
}
Run Code Online (Sandbox Code Playgroud)

活动主文件

<?xml version="1.0" …
Run Code Online (Sandbox Code Playgroud)

android kotlin material-design bottomnavigationview

3
推荐指数
1
解决办法
1069
查看次数

如何在高于默认的 BottomNavigationView 上添加指示器?

背景

我试图拥有更大一点的 BottomNavigationView (高度更大一点),同时还使每个项目图标都有一个顶部指示器,表明它已被选中。

类似的东西,但高度更大:

在此输入图像描述

在屏幕截图中很难看到它,但该指示器显示在 BottomNavigationView 项目的最顶部,位于 BottomNavigationView 阴影的正下方。

问题

当我设置较大的高度时,每个项目仍然采用较小的高度,因此指示器不会看顶部:

在此输入图像描述

不仅如此,因为我曾经itemBackground将每个项目的背景设置为具有指示器,所以现在它没有用于点击效果的背景。

我发现了什么

关于高度,我在 StackOverflow 上发现了这个关于更改高度的问题。唯一的解决方案是覆盖库的尺寸。在这种情况下,只有这样:

<dimen name="design_bottom_navigation_height" tools:override="true">...</dimen>
Run Code Online (Sandbox Code Playgroud)

然而,这仅解决了将指标置于顶部的问题。

另外,它看起来像是一个肮脏的解决方案,强制为库设置尺寸,正如我所写,因为我使用了itemBackground,它不再具有正常的点击效果。

这是相关代码,根据Android Studio的向导进行了一些修改,用于制作“底部导航活动”。其余的与那里相同:

活动主文件

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/container" xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context=".MainActivity">

    <TextView
        android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginStart="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin" android:text="@string/title_home"
        app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"/>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_view" android:layout_width="0dp"
        android:layout_height="@dimen/tabs_height" android:layout_marginEnd="0dp"
        android:layout_marginStart="0dp" android:background="?android:attr/windowBackground" app:itemBackground="@drawable/activity_main__tab_background"
        app:labelVisibilityMode="unlabeled" app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/bottom_nav_menu"/>

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

尺寸.xml

<dimen name="tabs_height">64dp</dimen>
<dimen name="design_bottom_navigation_height" tools:override="true">@dimen/tabs_height</dimen>
Run Code Online (Sandbox Code Playgroud)

Activity_main__tab_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <layer-list>
            <item android:gravity="top">
                <shape android:shape="rectangle">
                    <size …
Run Code Online (Sandbox Code Playgroud)

android bottomnavigationview

3
推荐指数
1
解决办法
3154
查看次数

BottomNavigationView 中的所选项目与背景颜色相同

我正在实现底部导航菜单。但未选择菜单中的第一项。我注意到,当我更改栏背景的颜色时,它会显示出来,原因是第一个项目“启用”颜色与导航栏的背景颜色相同。如何更改已启用选项卡以及其余项目的颜色。默认情况下它们是黑色的......假设我想将它们更改为白色。感谢主要活动的图片。http://pctechtips.org/apps/activity.png 菜单 xml 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications" />
</menu>
Run Code Online (Sandbox Code Playgroud)

活动主文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <org.techgeorge.textrecon.PaintView
        android:id="@+id/paintView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        app:menu="@menu/bottom_nav_menu" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

android bottomnavigationview android-bottomnav material-components material-components-android

3
推荐指数
2
解决办法
6876
查看次数

如何在 Android 中继续显示底部导航菜单标题?

我在底部导航视图中有 5 个图标,当我单击菜单时,我可以看到菜单的标题,如果我单击另一个图标,前一个的标题就会消失。我想继续以 XML 形式显示所有菜单的标题。我该怎么做?

这是我在活动 XML 中的代码。

 <androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNV"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/light_gray"
        app:itemIconTint="@color/black"
        app:itemTextColor="@color/black"
        app:menu="@menu/bottom_navigation_menu"/>


</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

这是一个菜单资源文件。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/bottom_menu_home"
    android:enabled="true"
    android:icon="@drawable/bottom_home_inactive"
    android:title="@string/bottom_menu_home" />

<item
    android:id="@+id/bottom_menu_search"
    android:enabled="true"
    android:icon="@drawable/bottom_search_inactive"
    android:title="@string/bottom_menu_search" />

<item
    android:id="@+id/bottom_menu_message"
    android:enabled="true"
    android:icon="@drawable/bottom_message_inactive"
    android:title="@string/bottom_menu_message" />

<item
    android:id="@+id/bottom_menu_reservation"
    android:enabled="true"
    android:icon="@drawable/bottom_reservation_inactive"
    android:title="@string/bottom_menu_reservation" />

<item
    android:id="@+id/bottom_menu_myInfo"
    android:enabled="true"
    android:icon="@drawable/bottom_myinfo_inactive"
    android:title="@string/bottom_menu_myInfo" />
Run Code Online (Sandbox Code Playgroud)

android android-xml bottomnavigationview material-components-android android-bottomnavigationview

3
推荐指数
1
解决办法
2788
查看次数

添加 com.google.android.material 后 Android 底部导航栏颜色变为黑色

我刚刚添加com.google.android.material到我的项目中,底部导航栏颜色更改为黑色。截图在这里

在此输入图像描述

添加com.google.android.material:material:1.1.0

在此输入图像描述

android bottomnavigationview material-components-android

3
推荐指数
1
解决办法
5152
查看次数

有没有办法向android Material View底部导航添加圆角?

我正在尝试为底部导航添加圆角,并且我尝试更改宽度和高度但它不起作用。我正在使用相对布局,宽度设置为“fill_parent”,高度设置为“warp_content”我有两个图标登录和注册,我希望整个导航都有圆角。我正在使用 Material Design 底部导航:

  <com.google.android.material.bottomnavigation.BottomNavigationView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/botttom_navigation"
    app:itemBackground="@android:color/darker_gray"
    app:itemTextColor="@drawable/selector"
    app:itemIconTint="@drawable/selector"
    android:layout_alignParentBottom="true"
    app:menu="@menu/menu_navigation"/>
Run Code Online (Sandbox Code Playgroud)

这是它的样子

这是它的样子

我希望它有这样的圆角。不是漂浮而是角落 圆角

android bottomnavigationview android-bottomnav material-components-android android-bottomnavigationview

3
推荐指数
2
解决办法
2638
查看次数

Android,如何使用带有底部导航视图的协调器布局

我在使用带有底部导航栏的协调器布局时遇到问题,片段容器似乎位于底部导航栏下方。

在此输入图像描述

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.appbar.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    app:layout_anchorGravity="top"
    app:liftOnScroll="true">

    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/homeToolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" />
</com.google.android.material.appbar.AppBarLayout>

<FrameLayout
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_anchorGravity="center"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/nav_host_fragment_activity_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mobile_navigation" />

</FrameLayout>

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
    app:menu="@menu/bottom_nav_menu" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

如何排列元素以在顶部应用栏和底部导航视图之间创建片段容器?

android android-coordinatorlayout bottomnavigationview

3
推荐指数
1
解决办法
4178
查看次数

在材质3中,BottomAppBar的背景颜色没有改变。粉色阴影出现在 BottomAppBar 的背景中

我将flutter 3.3.10升级到3.7.3。在材质3中,BottomAppBar的背景颜色没有改变。BottomAppBar、BottomStyleSheet等的背景出现粉红色阴影。并且BottomAppBar和BottomNavigationBar不合并,它们单独作用 see image。当我切换到材质 2 设计时,效果很好,但有些动画会受益于材质 3 设计。

import 'package:bottom_navbar/constants/app_assets.dart';
import 'package:bottom_navbar/constants/app_colors.dart';
import 'package:bottom_navbar/constants/app_labels.dart';
import 'package:bottom_navbar/constants/app_styles.dart';
import 'package:bottom_navbar/size_config.dart';
import 'package:flutter/material.dart';

class MainScreen extends StatefulWidget {
  const MainScreen({super.key});

  @override
  State<MainScreen> createState() => _MainScreenState();
}

class _MainScreenState extends State<MainScreen> {
  @override
  Widget build(BuildContext context) {
    int ci = 0;
    return Scaffold(
      backgroundColor: Colors.white,
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      floatingActionButton: FloatingActionButton(
          heroTag: AppLabels.addOrEditHero,
          shape:
              RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
          onPressed: () {},
          backgroundColor: AppColors.colorWhite,
          child: Container(
            decoration: BoxDecoration(
                shape: BoxShape.circle,
                border: Border.all(width: 3, color: AppColors.colorWhite)),
            child: Image.asset(
              AppAssets.add, …
Run Code Online (Sandbox Code Playgroud)

dart flutter bottomnavigationview material3

3
推荐指数
1
解决办法
2126
查看次数

在底部导航视图中不预先选择任何项目

我正在将新的底部导航视图从材料设计库添加到项目中,并且我希望默认情况下没有预先选择的项目.

目前,默认选择第一项.

我用过

mBottomNavigation.getMenu().getItem(0).setChecked(false);
Run Code Online (Sandbox Code Playgroud)

但是当在for循环中为所有菜单项执行时,默认情况下再次选择最后一项.

有没有办法实现这个目标?

android bottomnavigationview

2
推荐指数
3
解决办法
9522
查看次数

如何在BottomNavigationView中隐藏和显示菜单?

我用BottomNavigationView创建了一个活动,它运行正常.

但是我无法隐藏菜单项.

我试过这段代码.

.bottomNavigationView.getMenu()则findItem(R.id.tab_email).setVisible(假);

我甚至试图调用bottomNavigationView.invalidate();

所有输入都表示赞赏.

android menu dynamic bottomnavigationview

2
推荐指数
1
解决办法
3762
查看次数