当我使用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) 我试图拥有更大一点的 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) 我正在实现底部导航菜单。但未选择菜单中的第一项。我注意到,当我更改栏背景的颜色时,它会显示出来,原因是第一个项目“启用”颜色与导航栏的背景颜色相同。如何更改已启用选项卡以及其余项目的颜色。默认情况下它们是黑色的......假设我想将它们更改为白色。感谢主要活动的图片。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
我在底部导航视图中有 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
我刚刚添加com.google.android.material到我的项目中,底部导航栏颜色更改为黑色。截图在这里
添加后com.google.android.material:material:1.1.0
我正在尝试为底部导航添加圆角,并且我尝试更改宽度和高度但它不起作用。我正在使用相对布局,宽度设置为“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
我在使用带有底部导航栏的协调器布局时遇到问题,片段容器似乎位于底部导航栏下方。
<?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)
如何排列元素以在顶部应用栏和底部导航视图之间创建片段容器?
我将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) 我正在将新的底部导航视图从材料设计库添加到项目中,并且我希望默认情况下没有预先选择的项目.
目前,默认选择第一项.
我用过
mBottomNavigation.getMenu().getItem(0).setChecked(false);
Run Code Online (Sandbox Code Playgroud)
但是当在for循环中为所有菜单项执行时,默认情况下再次选择最后一项.
有没有办法实现这个目标?
我用BottomNavigationView创建了一个活动,它运行正常.
但是我无法隐藏菜单项.
我试过这段代码.
.bottomNavigationView.getMenu()则findItem(R.id.tab_email).setVisible(假);
我甚至试图调用bottomNavigationView.invalidate();
所有输入都表示赞赏.
android ×9
material-components-android ×4
android-bottomnavigationview ×2
android-xml ×1
dart ×1
dynamic ×1
flutter ×1
kotlin ×1
material3 ×1
menu ×1