我已将Bottom Navigation View添加到我的活动XMl中.我无法从菜单项中设置默认选中的项目.它始终将第一个菜单项设置为默认值.此外,当我点击其他菜单项时,所选菜单项不会突出显示.如果我以编程方式设置item.setChecked(true),则菜单选项会突出显示,但第一个菜单项也会突出显示.我在用
compile 'com.android.support:design:25.0.1'
Run Code Online (Sandbox Code Playgroud)
这是底部的导航视图
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:itemBackground="@color/white"
app:itemTextColor="@color/black"
app:menu="@menu/navigation_menu">
</android.support.design.widget.BottomNavigationView>
Run Code Online (Sandbox Code Playgroud)
这是菜单
<?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/action_wallet"
android:enabled="true"
android:icon="@drawable/ic_account_balance_wallet_black_24dp"
android:title="wallet"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/action_card"
android:enabled="true"
android:title="allowance"
android:icon="@drawable/ic_credit_card_black_24dp"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/action_transaction"
android:enabled="true"
android:icon="@drawable/ic_description_black_24dp"
android:title="transaction"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
谢谢,Priya
以下是我当前BottomNavigationView的XML.目前,所有三个图标drawable都是具有相同颜色的未填充图标.我希望能够在选择该状态时呈现图标的填充版本,并且可能更改颜色以使其显然是当前图标状态.以下图片是我的意思的一个例子.
<?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/action_favorites"
android:enabled="true"
android:icon="@drawable/icon_flyer"
android:title="Flyer"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_schedules"
android:enabled="true"
android:icon="@drawable/icon_list"
android:title="List"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_music"
android:enabled="true"
android:icon="@drawable/icon_contact"
android:title="Contact"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud) 我是Android的新手,我正在尝试在底部导航栏中创建一个包含3个以上元素的应用程序.我能够显示它们,但它们最终聚集在一起,只有三个可以正确显示.这是我的代码:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="15dp"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
app:menu="@menu/bottom_nav_items" />
Run Code Online (Sandbox Code Playgroud)
以下是视图的图像: 这是快照
我卡住了请帮忙..
在我的应用程序中,我想显示BottomNavigation底部,CoordinatorLayout为此我写下面的代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.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:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<android.support.design.widget.AppBarLayout
android:id="@+id/main.appbar"
android:layout_width="match_parent"
android:layout_height="150dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/main.collapsing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<include
android:id="@+id/mainToolbar"
layout="@layout/toolbar_main" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<com.aurelhubert.ahbottomnavigation.AHBottomNavigationViewPager
android:id="@+id/mainViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/mainBottomNavigation"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<com.aurelhubert.ahbottomnavigation.AHBottomNavigation
android:id="@+id/mainBottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:layout_anchorGravity="bottom"
app:selectedBackgroundVisible="true" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
但是当运行应用程序显示我的BottomNavigation顶部CoordinatorLayout!
我怎样才能显示BottomNavigation底部CoordinatorLayout?
我正在使用反应导航选项卡导航器并反应原生材料底部导航,它当前从屏幕滑动到屏幕.如材料设计指南所示,我如何让它从一个屏幕淡入淡出另一个屏幕.
Router.js
import React from 'react';
import { TabNavigator, StackNavigator, NavigationActions } from 'react-navigation';
import { NavigationComponent } from 'react-native-material-bottom-navigation';
import Icon from 'react-native-vector-icons/MaterialIcons';
import { MAIN_COLOR, BOTTOM_BAR_COLOR, BOTTOM_BAR_ICON_COLOR } from '../config';
import { Classes, Settings, Search, SplashScreen } from '../components/screens';
import Login from '../components/screens/Login';
import Main from '../Main';
export const Tabs = TabNavigator({
Classes: {
screen: Classes,
navigationOptions: {
tabBarLabel: 'Classes',
tabBarIcon: () => <Icon size={24} name="list" color={BOTTOM_BAR_ICON_COLOR} />,
},
},
Search: {
screen: Search,
navigationOptions: {
tabBarLabel: 'Search', …Run Code Online (Sandbox Code Playgroud)javascript react-native react-native-android bottomnavigationview react-navigation
重现步骤:
BottomNavigationView":

用以下方法替换MainActivity:
class MainActivity : AppCompatActivity() {
private var fragmentIds = ArrayList<Int>()
val fragmentA: FragmentA = FragmentA()
private val fragmentB = FragmentB()
private val fragmentC = FragmentC()
private fun getFragment(fragmentId: Int): Fragment {
when (fragmentId) {
R.id.navigation_home -> {
return fragmentA
}
R.id.navigation_dashboard -> {
return fragmentB
}
R.id.navigation_notifications -> {
return fragmentC
}
}
return fragmentA
}
private fun updateView(fragmentId: Int) {
var exists = false
fragmentIds
.filter { it == fragmentId }
.forEach { exists …Run Code Online (Sandbox Code Playgroud)我正在尝试为我的应用程序制作一个昼夜主题。我在使底部导航视图从白色背景自动切换到黑色背景时遇到了麻烦。
这是我的底部导航代码,
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@android:color/white"
app:itemIconTint="@drawable/bottomnavstate"
app:itemTextColor="@drawable/bottomnavstate"
app:menu="@menu/bottom_navigation_main" />
Run Code Online (Sandbox Code Playgroud)
建议使用白色背景以在印刷时产生涟漪效果。
我的主题如下:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<item name="android:colorPrimary">@color/primaryColor</item>
<item name="android:colorPrimaryDark">@color/primaryDarkColor</item>
<item name="android:colorAccent">@color/accentColor</item>
<item name="colorControlHighlight">@color/accentColor</item>
<item name="android:windowLightNavigationBar">true</item>
<item name="android:navigationBarColor">@android:color/background_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
1.添加了一个从app主题扩展的新主题,如下
<style name="BGTheme" parent="AppTheme">
<item name="android:background">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
将该主题添加到底部导航小部件,但我看到一个奇怪的涟漪效果,它延伸到导航栏之外,底部导航栏也失去了它的高度。
任何解决方案?
我正在查看Material 的入门设计指南。我想知道我应该如何复制这种导航。它似乎包含了一个特殊的底部标签栏和 viewpager。没有 viewpager 的滑动功能,只有两个按钮倾斜到底部标签栏的两侧。
android tabbar android-viewpager bottomnavigationview android-bottomnav
三星S8,S8 +,S9等的底部导航栏会导致UI和动画噩梦,以便在切换时从我的应用程序的顶部和底部移入和移出视图.对于这些设备,如果导航栏切换到一切都可以正常工作,但如果切换动画,则所有设置都会大约低于导航栏的高度.我的想法是调整动画,但是,我很难搞清楚手机有一个底部导航栏并且它被切换掉了.
我创建了一个帮助方法,它让我知道一个设备有一个切换的导航栏.对于具有导航栏并且已打开的所有设备,此函数将返回true.但我想要处理的情况是它被切换掉的时候.问题是,切换掉就像所有其他手机一样.怎么解决这个?有没有办法强制导航栏永久显示?
public static boolean hasNavBar(@NonNull Activity activity, @NonNull View rootView) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
return true;
}
// retrieve the window manager for showing custom windows
Display d = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics realDisplayMetrics = new DisplayMetrics();
d.getRealMetrics(realDisplayMetrics);
int viewHeight = rootView.getHeight();
if (viewHeight == 0) {
return true;
}
int realHeight = realDisplayMetrics.heightPixels;
return realHeight != viewHeight;
}
Run Code Online (Sandbox Code Playgroud)