我一直在尝试新的BottomNavigationView并尝试自定义它.
到目前为止,我已设法通过使用以下内容更改高度和边距:
<dimen name="design_bottom_navigation_height" tools:override="true">75dp</dimen>
<dimen name="design_bottom_navigation_margin" tools:override="true">5dp</dimen>
Run Code Online (Sandbox Code Playgroud)
我想增加图标的大小.
如何才能做到这一点?
编译版本:com.android.support:design:25.0.1
在Android的程式码实验室用于导航做得很好,说明如何用一起使用的架构组件导航BottomNavigationView.但是,假设我在2个标签BottomNavigationView,TAB1和TAB2.让我们说在Tab1中你可以浏览片段Frag1 - > Frag2.现在,每当我去TAB2,然后回到TAB1,片段回栈Frag1,2走了,并与起点更换Frag1一次.
我在应用程序中需要做什么,以便即使我更改标签,BottomNavigationView与导航一起保持其后堆栈完好无损?并且,还保持后退/上行按钮行为与指南同步.
以前我通过使用ViewPager和管理后台堆栈来完成这项任务,但这并不像使用新导航的正确方法.
提前致谢!
编辑:
还有一个更详尽的答案在这里.
android android-navigation bottomnavigationview android-architecture-components android-jetpack
我正在使用最后一个导航库(版本 2.4.0),其中包括多个带有底部导航视图的返回堆栈。
默认行为是当用户返回选项卡时保存每个返回堆栈。我想在用户离开选项卡时清除后退堆栈。
基于此带有 3 个选项卡的底部导航:
| 表1 | 表2 | 表3 |
|---|---|---|
| 屏幕A1 | 屏幕B1 | 屏幕C1 |
| 屏幕A2 | 屏幕B2 | 屏幕C2 |
从 Tab1 中,如果用户:
谢谢
android android-navigation bottomnavigationview android-bottom-nav-view android-architecture-navigation
在我的menu.xml文件中为BottomNavigationView添加4个项目后,它仅显示所选项目标题并隐藏所有其他标题.我可以强制显示标题和图标.这是我的代码.
<?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_home"
android:enabled="true"
android:icon="@drawable/ic_home_24dp"
android:title="@string/text_home"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_category"
android:enabled="true"
android:icon="@drawable/ic_grid_24dp"
android:title="@string/text_category"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_me"
android:enabled="true"
android:icon="@drawable/ic_me_24dp"
android:title="@string/text_me"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_setting"
android:enabled="true"
android:icon="@drawable/ic_cog_24dp"
android:title="@string/text_setting"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:elevation="6dp"
android:translationZ="6dp"
app:menu="@menu/bottom_navigation_main" />
Run Code Online (Sandbox Code Playgroud) 我有一个BottomNavigationView我像这样实例化的:
BottomNavigationView navigationView = findViewById(R.id.bottom_navigation);
navigationView.setOnNavigationItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
/menu/menu.xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/first_id"
android:icon="@drawable/home_icon"
android:title="Item" />
<item
android:id="@+id/second_id"
android:icon="@drawable/home_icon"
android:title="Item" />
<item
android:id="@+id/third_id"
android:icon="@drawable/home_icon"
android:title="Item" />
<item
android:id="@+id/fourth_id"
android:icon="@drawable/home_icon"
android:title="Item" />
</menu>
Run Code Online (Sandbox Code Playgroud)
/drawable/home_icon 看起来像这样:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFF0"
android:pathData="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"
android:strokeColor="#FFFFF0"
android:strokeWidth="1" />
</vector>
Run Code Online (Sandbox Code Playgroud)
如您所见,导航项的按钮周围有边框,但是,边框相互接触。因此我想在菜单按钮之间添加一个边距。我怎样才能做到这一点?
从屏幕截图中也可以看出,我正在阻止切换模式。我通过调用来做到这一点
BottomNavigationViewHelper.removeShiftMode(navigationView);
Run Code Online (Sandbox Code Playgroud)
使用这里的代码。
按钮周围的边框已添加如下:
int stateListDrawable = drawableStateLists.get(currentFragment);
navigationView.setItemBackgroundResource(stateListDrawable);
Run Code Online (Sandbox Code Playgroud)
whilestateListDrawable指的是StateListDrawable当按下不同的菜单按钮时会发生变化的 a。的StateListDrawable指向XML选择这又是指一个xml形状像这样,例如:
<?xml version="1.0" encoding="utf-8"?> …Run Code Online (Sandbox Code Playgroud) java android android-layout android-view bottomnavigationview
在iOS中,当我们推送到新的ViewController时,我们有一个UITabBarController永久保留在屏幕的底部.
在Flutter中,我们有一个底部导航栏的脚手架.但是,与iOS不同的是,当我们Navigator.push进入新的屏幕时,这个bottomNavigationBar消失了.
在我的应用程序,我想满足这一要求:主屏幕上有一个bottomNavigationBar与2项(一&b)提示画面一&乙.默认情况下,屏幕上一个显示.在屏幕A内,有一个按钮.点击该按钮, Navigator.push筛选Ç.现在在屏幕C中,我们仍然可以看到bottomNavigationBar.轻按项目b,我去筛选乙.现在,在屏幕乙,龙头项目一在bottomNavigationBar,我回去屏幕Ç(不是一个,一个是目前低于Ç在导航层次).
我怎样才能做到这一点?多谢你们.
编辑:我包括一些图片用于演示:
屏幕A 屏幕A.
点击转到C按钮,按到屏幕C 屏幕C
点击底部导航栏内的右侧项目,转到屏幕B 屏幕B.
希望使用一个主要的中心操作按钮修改底部导航栏,该按钮改变导航栏本身的形状,或者像这样的弧形

或者底部导航中的一个驼峰包围着它周围的中心按钮。
如果我必须延长,我很好,BottomNavigationView但我不知道从哪里开始。
我发现了这个类似的问题,但这不是我想要解决的确切问题。
我添加了BottomNavigationView,然后事情开始变得复杂。我不知道是什么导致了这个错误,当我构建项目时没问题,但是当我想在模拟器中玩应用程序时 - 会弹出这个错误。
这是我的 build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.pokrz.x"
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.parse:parse-android:1.16.3'
implementation 'com.google.android.material:material:1.0.0-beta01'
} …Run Code Online (Sandbox Code Playgroud) java android android-studio build.gradle bottomnavigationview
我已经BottomNavigationView根据这个例子实现了徽章计数
/sf/answers/3943845041/
它工作正常,但我想更改徽章的背景颜色有什么办法吗?
android material-design bottomnavigationview material-components material-components-android
我想禁用选定项目的底部导航栏动画,以获得与未选定项目相同的文本/图标大小。
这是我的代码:
class BottomNavigationBarHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
unselectedItemColor: Colors.black38,
backgroundColor: Colors.white,
items: [
BottomNavigationBarItem(
icon: Icon(BalanceIcon.scale_balance, size: 15.0),
title: Text('Item 1', style: TextStyle(
),)
),
BottomNavigationBarItem(
icon: Icon(BalanceIcon.scale_balance),
title: Text('Item 2')
),
BottomNavigationBarItem(
icon: Icon(BalanceIcon.scale_balance),
title: Text('Item 3')
),
]
);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试设置相同的字体大小,动画仍然在这里
android ×8
flutter ×2
java ×2
android-architecture-components ×1
android-architecture-navigation ×1
android-view ×1
build.gradle ×1
material-components-android ×1
mobile ×1
navigator ×1