标签: android-bottom-nav-view

Android导航组件+登录流程+嵌套BottomNavigationView

我正在努力使用 Android 导航组件构建导航,如下图所示。

我需要一个“登录流程”,检查用户是否登录,然后导航到应用程序的主要部分(也清除后台堆栈)。主要部分包含一个带有三个选项卡的 BottomNavigationView。但是如果我点击工具栏上的设置图标,我也想显示一个全屏的 SettingsFragment。

我是否需要两个带有单独导航图的 NavHostFragment?如果是,我怎样才能将它们结合起来并有一个适当的反向导航?

任何想法如何使用android导航组件实现这样的导航?

在此处输入图片说明

android android-navigation android-bottom-nav-view android-jetpack-navigation

14
推荐指数
1
解决办法
2109
查看次数

Android Architecture导航组件与底部导航?

现在我想知道哪种方法最适合BottomNavigation与新方法结合使用Android Architecture Navigation Component

现在发现两种方法:

  1. 单个导航图可维护所有BottomNavigation项目,可从Google Codelabs以下网址显示:https : //codelabs.developers.google.com/codelabs/android-navigation/#1
  2. 多个导航图,其中每个BottomNavigation项目都有其自己的属性,navigation graph仅维护其行为backstack,我在此处显示了它:https : //proandroiddev.com/mastering-the-bottom-navigation-with-the-new-navigation-architecture-component-cd6a71b266ae

我的观点是,第二种观点更加清晰和可以理解,但也许您有另一种观点。

android android-bottomnav android-bottom-nav-view android-architecture-components android-jetpack

12
推荐指数
2
解决办法
6015
查看次数

BottomNavigationView原始图标颜色

我有我的bottomNavigationView:

在此输入图像描述

我添加了这个类,以防止它做shiftMode:

public class BottomNavigationViewHelper {
    public static void disableShiftMode(BottomNavigationView view) {
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
        try {
            Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
            shiftingMode.setAccessible(true);
            shiftingMode.setBoolean(menuView, false);
            shiftingMode.setAccessible(false);
            for (int i = 0; i < menuView.getChildCount(); i++) {
                BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
                //noinspection RestrictedApi
                item.setShiftingMode(false);
                // set once again checked value, so view will be updated
                //noinspection RestrictedApi
                //item.setChecked(item.getItemData().isChecked());
            }
        } catch (NoSuchFieldException e) {
            Log.e("BNVHelper", "Unable to get shift mode field", e);
        } catch (IllegalAccessException e) {
            Log.e("BNVHelper", "Unable …
Run Code Online (Sandbox Code Playgroud)

android android-menu android-bottom-nav-view

10
推荐指数
2
解决办法
9162
查看次数

隐藏子屏幕/片段的android底部导航视图

我正在尝试创建单个活动Android应用程序.我有使用BottomNavigationView的MainActivity(仅活动),三个顶级片段和一些子片段.我的要求是每当屏幕显示顶级片段时,底部导航应该是可见的,以便可以进行切换.但是当我查看任何子片段时,应隐藏底部导航.是否有任何使用导航组件的开箱即用方式或需要手动更改可见性?

android android-fragments kotlin android-bottom-nav-view android-architecture-navigation

9
推荐指数
3
解决办法
4600
查看次数

如何动态更改底部导航项文本?

在此输入图像描述

我正在努力实现上述设计。我可以更改图标,但无法更改底部文本。我使用材质底部导航栏

我通过为每个图标实现单独的选择器可绘制对象来实现图标更改。有什么方法可以对导航标题做同样的事情吗?

MainActivity.class

public class MainActivity extends AppCompatActivity {
BottomNavigationView navView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    navView = findViewById(R.id.nav_view);

    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
            R.id.navigation_home, R.id.navigation_saved, R.id.navigation_applied, R.id.navigation_profile, R.id.navigation_more)
            .build();

    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
    NavigationUI.setupWithNavController(navView, navController);



}
Run Code Online (Sandbox Code Playgroud)

活动主文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?attr/actionBarSize">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android material-design bottomnavigationview android-bottomnav android-bottom-nav-view

9
推荐指数
1
解决办法
7642
查看次数

Android 离开项目选项卡时清除后退栈 BottomNavigation

我正在使用最后一个导航库(版本 2.4.0),其中包括多个带有底部导航视图的返回堆栈。

默认行为是当用户返回选项卡时保存每个返回堆栈。我想在用户离开选项卡时清除后退堆栈。

基于此带有 3 个选项卡的底部导航:

表1 表2 表3
屏幕A1 屏幕B1 屏幕C1
屏幕A2 屏幕B2 屏幕C2

从 Tab1 中,如果用户:

  • 转到屏幕A2
  • 单击 Tab2(显示 ScreenB1)
  • 返回选项卡1
  • 这里我想要 ScreenA1 而不是 ScreenA2 (导航库的默认行为)

谢谢

android android-navigation bottomnavigationview android-bottom-nav-view android-architecture-navigation

9
推荐指数
2
解决办法
1821
查看次数

BottomNavigationView 文本在更改时闪烁

这里闪烁:http : //gph.is/2GH9P0b

<android.support.design.widget.BottomNavigationView
       android:id="@+id/navigation"
       style="@style/BottomNavigation"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_marginEnd="0dp"
       android:layout_marginStart="0dp"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintLeft_toLeftOf="parent"
       app:layout_constraintRight_toRightOf="parent"
       app:menu="@menu/navigation" />
Run Code Online (Sandbox Code Playgroud)

样式文件

<style name="BottomNavigation">
    <item name="android:background">@color/colorPrimary</item>
    <item name="itemIconTint">@drawable/nav_bottom_selector</item>
    <item name="itemTextColor">@drawable/nav_bottom_text_selector</item>
</style>
Run Code Online (Sandbox Code Playgroud)

选择器nav_bottom_text_selectornav_bottom_selector具有相同的代码。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" android:state_checked="true"/>
    <item android:color="#6e6e6e" />
Run Code Online (Sandbox Code Playgroud)

MainActivity.class 这是选项卡更改侦听器。但我认为问题不在这里,因为即使我评论这部分,它也一直在闪烁。

navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected (@NonNull MenuItem item) {

        switch (item.getItemId()) {
            case R.id.navigation_exercises:
                // even not replace tabs, just hide and show                          
                fragmentManager.beginTransaction().show(exerciseFragment).hide(workoutFragment).hide(profileFragment).commit();
                SharedPrefsHelper.getInstance().setLastTab(getApplicationContext(), ConsKeys.BOTTOM_TAB_EXERCISE);
                break;
            case R.id.navigation_workouts:
                fragmentManager.beginTransaction().hide(exerciseFragment).show(workoutFragment).hide(profileFragment).commit();
                SharedPrefsHelper.getInstance().setLastTab(getApplicationContext(), ConsKeys.BOTTOM_TAB_WORKOUTS);
                break;

            case R.id.navigation_profile:
                fragmentManager.beginTransaction().hide(exerciseFragment).hide(workoutFragment).show(profileFragment).commit(); …
Run Code Online (Sandbox Code Playgroud)

xml android selector drawable android-bottom-nav-view

8
推荐指数
1
解决办法
1733
查看次数

BottomNavigationView:如何删除带连字符的标签

实现 5 项 BottomNavigationView - 始终显示标签 - 我使用以下方法:

<android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation"
        app:labelVisibilityMode="labeled"/>
Run Code Online (Sandbox Code Playgroud)

不幸的是,结果在活动时将单词连字符,如图所示:

带连字符的活动标签

我尝试为标签的活动文本设置不同的样式:

app:itemTextAppearanceActive="@style/text_navigation_active_labels"
Run Code Online (Sandbox Code Playgroud)

-- 样式.xml --

<style name="text_navigation_active_labels">
    <item name="android:breakStrategy">simple</item>
    <item name="android:hyphenationFrequency">none</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但结果是完全一样的(我是否只使用 break 策略、hyphenationFrequency 或两者)。我目前正在 API 27 物理电话上对其进行测试。

任何帮助表示赞赏。

android android-bottom-nav-view

7
推荐指数
1
解决办法
3318
查看次数

BottomSheet Fragment底部工作表布局中存在的NestedScrollview中的滚动行为问题

我的场景是按钮点击我需要打开一个底部展开的底部,当我们向上拖动时它应该像collasping工具栏一样.

这里Appbar的行为与Bottomsheet同步,但不知何故,NestedScrollview行为只与Collasping工具栏同步,而不是Bottomsheet行为.

当我在NestedScrollview上滚动它只是扩展和压缩工具栏而不是BottomSheet.

下面是底部布局:

<?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:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:elevation="@dimen/design_appbar_elevation"
    android:layout_height="match_parent"
    app:layout_behavior="@string/bottom_sheet_behavior"

    app:behavior_hideable="true"

    >

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:fitsSystemWindows="true"
        android:layout_height="192dp"
        android:layout_width="match_parent"

        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:toolbarId="@+id/toolbar"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
            android:fitsSystemWindows="true"

            app:contentScrim="?attr/colorPrimary">

            <ImageView
                android:id="@+id/app_bar_image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_collapseMode="parallax"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent">


            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="none"

        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="300dp">

            <EditText
                android:id="@+id/editText"
                android:layout_width="222dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:layout_marginEnd="8dp"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="Name"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="Name"
                app:layout_constraintEnd_toEndOf="@+id/editText"
                app:layout_constraintStart_toStartOf="@+id/editText" …
Run Code Online (Sandbox Code Playgroud)

android android-appbarlayout android-nestedscrollview bottom-sheet android-bottom-nav-view

6
推荐指数
0
解决办法
1254
查看次数

如何使用Android导航组件+BottomNavigationView+NavigationView(Navigation Drawer)

我想知道使用 Navigation Component + BottomNavigationView + NavigationDrawer 的最佳实践是什么。

我已经尝试过谷歌的导航组件高级示例。它适用于多个后堆栈模块。因为它有一个变通方法扩展名。使用这种方法时,每个底部选项卡都有自己的图形,并且图形会随着您选择其中一个选项卡而发生变化。

但是在集成NavigationView的时候,需要提前知道导航图。但在高级示例中,未使用 navGraph 属性,以编程方式为底部导航添加图形。

那么当Bottom Navigation View和Navigation Drawer View一起使用时,我们如何管理图表呢?

android navigation-drawer android-bottom-nav-view android-jetpack android-architecture-navigation

6
推荐指数
1
解决办法
306
查看次数