标签: bottomnavigationview

Android BottomNavigationView以自定义视图作为图标

我正在尝试从Android支持库中获取新的BottomNavigationView.对于其中一个菜单项,我希望有一个自定义视图,以便我可以以编程方式添加圆形用户图像作为图标.

使用后,使用此支持组件或roughhike/BottomBar库似乎不可能.有任何想法吗?关于如何在菜单中使用布局作为图标以及如果可以使用BottomNavigationView或其他库,可以简化问题.

android bottomnavigationview

10
推荐指数
0
解决办法
6626
查看次数

BottomNavigationView禁用移位模式而不使用反射

在此输入图像描述

BottomNavigationView不允许禁用shift模式在新版本的支持库中修复此问题?

还有一些使用反射机制的解决方案我不认为它的正确方法是解决这个主要问题.

所有准备好看到这个解决方案不想使用它

android android-support-library androiddesignsupport bottomnavigationview

10
推荐指数
1
解决办法
3694
查看次数

使用BottomNavigationView的FloatingActionButton

我无法定位我的FAB.它应该在右下角,但在BottonNavigationView之上.

1)我可以在coordinateLayout内部没有RelativeLayout的情况下实现这一点吗?

2)告诉我如何

3)我应该使用FrameLayout作为片段的容器吗?

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/appbar_padding_top"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/AppTheme.PopupOverlay">

    </android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>

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

</FrameLayout>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab_electricity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    android:layout_margin="@dimen/fab_margin"
    app:layout_anchorGravity="bottom|right|end"
    app:srcCompat="@drawable/ic_add_electro" />

<android.support.design.widget.BottomNavigationView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom">

</android.support.design.widget.BottomNavigationView>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

结果

xml android bottomnavigationview

10
推荐指数
1
解决办法
5501
查看次数

Android - 如何将项目添加到底部导航栏

我创建了一个底部导航栏.我在res下创建一个menu.xml.我将BottomNavigation添加到主布局.

<android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        app:menu="@menu/menu"
        app:layout_scrollFlags="scroll|enterAlways|snap"
        />
Run Code Online (Sandbox Code Playgroud)

但我想以编程方式添加项目.我能怎么做?BottomNavigation 指南说明了这一点

可以通过指定菜单资源文件来填充条形内容.每个菜单项标题,图标和启用状态将用于显示底部导航栏项.菜单项也可用于以编程方式选择当前活动的目的地.可以使用MenuItem#setChecked(true)来完成

我知道使用xml是一个填充的解决方案,但不仅仅是创建底部导航的方法.

我在onCreate函数中使用下面的代码添加一个新项:

Menu menu = bottomNavigationView.getMenu();
menu.add(0, id, Menu.NONE, "NEW ITEM");
Run Code Online (Sandbox Code Playgroud)

它无法正常工作.我只能在导航栏上看到一个项目.当我可以按下项目的区域时,项目出现(其他项目消失).

编辑

我发现了问题.如果我在导航栏上放置了3个以上的项目,则会出现此问题.还有一个问题,关于这个问题.解决方案有效!

android menuitem android-fragments bottomnavigationview

10
推荐指数
0
解决办法
3378
查看次数

BottomNavigationView在CoordinatorLayout中重叠FrameLayout

以下是我的布局xml.现在的问题是BottomNavigationView与FrameLayout重叠.我希望FrameLayout延伸到BottomNavigationView的顶部.

我尝试使用技巧,例如在FrameLayout中添加paddingBottom,但我想知道是否还有其他更好的解决方案.谢谢.

<?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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <include layout="@layout/user_app_bar"/>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="?android:attr/windowBackground"
        app:menu="@menu/navigation"
        app:itemTextColor="@color/colorPrimaryDark"
        app:itemIconTint="@color/colorPrimaryDark"
        />

    <FrameLayout
        android:id="@+id/fragment_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="58dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

   <android.support.design.widget.FloatingActionButton
       android:id="@+id/fab"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_margin="@dimen/fab_margin"
       app:layout_anchorGravity="bottom|end"
       app:layout_anchor="@id/app_bar"
       app:srcCompat="@drawable/ic_edit_white_24px" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

更新:有关user_app_bar.xml的更多信息.它包含一个CollapsingToolbarLayout.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout 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/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay"
    app:layout_behavior="co.domain.DisableAppBarLayoutBehaviour"
    >

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:titleEnabled="false"
        app:contentScrim="?attr/colorPrimary">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_collapseMode="parallax">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:layout_marginBottom="0dp"
                android:layout_marginLeft="0dp"
                android:layout_marginRight="0dp"
                android:layout_marginTop="0dp"
                android:contentDescription=""
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent" …
Run Code Online (Sandbox Code Playgroud)

android coordinator-layout bottomnavigationview

10
推荐指数
3
解决办法
5835
查看次数

底部导航栏:文字大小在按下时会增加?

我在Android中使用底部导航栏.默认情况下,当我选择项目时,该项目标签的文本大小会增加.正如"锦标赛"标签所示.

在此输入图像描述

在此输入图像描述

有没有办法删除这个'所以'锦标赛'这个词保持相同的大小?

java android material-design bottomnavigationview

10
推荐指数
3
解决办法
5403
查看次数

CoordinatorLayout内容子项重叠BottomNavigationView

我试图用CoordinatorLayout一个BottomNavigationView,一个AppBarLayout,和ViewPager.这是我的布局:

<?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"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="enterAlways|scroll"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="?android:attr/windowBackground"
        app:itemIconTint="?colorPrimaryDark"
        app:itemTextColor="?colorPrimaryDark"
        app:menu="@menu/navigation"/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

问题是,CoordinatorLayout地方ViewPager延伸到屏幕的底部,所以底部被掩盖BottomNavigationView,就像这样:

ViewPager的边界

即使CoordinatorLayout本身到目前为止还没有延伸,这种情况会发生:

CoordinatorLayout的范围

我试着加入app:layout_insetEdge="bottom"BottomNavigationViewapp:layout_dodgeInsetEdges="bottom"ViewPager,但有一个不同的问题:它改变了底部ViewPager,但它保持相同的高度,使顶部现在剁掉:

转移了ViewPager边界

我尝试了另外两个实验.首先,我尝试将它们BottomNavigationViewCoordinatorLayout垂直方向移除并使它们成为兄弟姐妹LinearLayout.其次,我把ViewPagerBottomNavigationView一起下LinearLayout …

android android-layout coordinator-layout bottomnavigationview

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

返回到"导航架构组件"中的相同选项卡时,嵌套片段的状态将丢失

我正在探索上个月在Google I/O 2018中引入的"导航架构组件"概念.

假设我有一个带有底部导航视图和'片段'的活动来托管所有片段: -

<android.support.constraint.ConstraintLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.MainActivity">


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

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

我的底部导航视图中有2个动作/标签,分别显示FragmentA和FragmentB.FragmentB有一个嵌套的(子)片段FragmentC,它可以从FragmentB打开.

在我的Activity类中,我使用'setupWithNavController()'函数将底部导航视图与导航控制器链接起来.(包含在'androidx.navigation.ui'包中的Kotlin扩展函数): -

override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      bottom_navigation.setupWithNavController(findNavController(R.id.root_form))


 }
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作正常.

但是当用户在FragmentC中并且返回agin到相同的选项卡时,用户导航到FragmentA然后他将只获得FragmentB而不是fragmentC.当用户返回相同的选项卡时,它是底部导航中的常见模式,它应显示他正在查看的最后一个子/嵌套片段.

我知道如果我们有自己的片段事务但是如何在"导航架构组件"域中解决此问题,我们可以处理这个问题?

navigation android bottomnavigationview android-architecture-components android-jetpack

10
推荐指数
1
解决办法
1148
查看次数

侧面导航抽屉项目点击不起作用

在任何人将其作为重复问题之前先阅读,因为它不是.

我使用了导航抽屉,底部导航栏和自定义操作栏.

底部导航栏和操作栏工作正常.导航抽屉还显示其下的菜单,但项目不可点击.

我已经尝试了所有相关的答案

导航抽屉项目单击不起作用

但我的问题还没有解决.调试部分没有错误.

输出图像

输出图像

仪表板活动

package com.vicky.sampleApp;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v7.widget.Toolbar;

public class Dashboard extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
    //android.app.ActionBar actionbar;
    TextView textview;
    TextView textviewTitle;
    private ActionBar toolbar;
    private DrawerLayout drawer;
    private ActionBarDrawerToggle toggle;

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer android-navigationview bottomnavigationview

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

NavBar下面的BottomNavigationBar

目标:

1)使状态栏透明 - 完成

2)充分利用BottomNavigationViewNavbar相同的颜色.- 差不多完成了

问题

通过在我的代码中添加以下代码Activity,状态栏变为透明.但是,BottomNavigationView落在了下面NavBar.如果我删除这行代码,则StatusBar不再是透明的.你觉得我在这痛苦吗?此外......如何让布局的TOP位于状态栏下方?

活动中的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Window w = getWindow();
    w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, 
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
Run Code Online (Sandbox Code Playgroud)

活动XML:

<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">

<com.custom.app.view.ClickableViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/tab_layout" />

<android.support.design.widget.BottomNavigationView
    android:id="@+id/tab_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="@color/custom_black"
    app:itemIconTint="@color/white"
    app:itemTextColor="@color/white"
    app:menu="@menu/bottom_navigation_main" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

Style.xml

<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item …
Run Code Online (Sandbox Code Playgroud)

android styles navbar android-layout bottomnavigationview

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