标签: android-bottomappbar

How to Add custom menu to Bottom App Bar?

I am using new Material Bottom app bar in android. I have implemented it successfully but I don't know how to add custom menu items to the bar. Whenever I add the menu items they shows up as 3 dots only even if I provide the option android:showAsAction="always".

I want specific icons like the screenshot below.想要的结果 But instead I get result like this. 在此处输入图片说明

Here is the layout code.

<com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottom_app_bar"
    style="@style/Widget.MaterialComponents.BottomAppBar"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_gravity="bottom"
    app:backgroundTint="@color/colorPrimaryDark"
    app:fabCradleMargin="5dp"
    app:fabAlignmentMode="center"/>

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android material-design android-bottomappbar

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

顶部应用栏和底部应用栏的两个不同菜单,带有导航组件

我正在尝试Android 导航架构组件,并且还在研究材料设计指南.我真的受到以下设计的启发:

顶部和底部的应用栏

对于顶部工具栏,我可以设置它setSupportActionBar(toolbar),然后在MainActivity:

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

但是在尝试时我无法弄清楚如何在顶部和底部应用栏上为不同的片段实现菜单,特别是对于底部应用栏.

例如,我想在底部应用栏上显示一个喜欢的图标DetailFragment,但是MainActivity,它应该消失了.

我目前的代码:

主要活动

public class MainActivity extends AppCompatActivity {

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

        NavController navController = Navigation.findNavController(this, R.id.nav_host);
        NavigationUI.setupActionBarWithNavController(this, navController);


        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show());


    }

    @Override
    public boolean onSupportNavigateUp() …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-jetpack android-bottomappbar androidx

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

AndroidX BottomAppBar导航图标颜色

我在布局中定义了一个底栏:

<com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottomBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    app:navigationIcon="@drawable/ic_menu_black_24dp" />
Run Code Online (Sandbox Code Playgroud)

导航图标是从"new vector drawable"向导生成的通用图标.有没有办法对它应用色调?

底栏不是活动操作栏.

到目前为止我尝试过的:

  • 应用了一个覆盖textColorPrimary颜色的主题
  • 应用了一个覆盖controlColorNormal颜色的主题

如果有一个解决方案也适用于通过从XML加载菜单(使用inflateMenu()replaceMenu())提供的图标,那将是完美的.

android material-design android-bottomappbar androidx

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

如何确保 CoordinatorLayout 子项不重叠

我在协调器布局内使用底部应用栏。其余内容来自片段。片段内容被底部应用栏覆盖

因为我使用的是 bottomAppBar,所以它必须在 CoordinatorLayout 内,并且所有孩子也必须在其中。BottomAppBar 上方的所有布局都应该填充提醒的空间,但如果我这样做,底部的视图就会被覆盖。如何确保视图不与 BottomAppBar 重叠

<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawerLayout_main"
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=".main.MainActivity">

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/coordinatorLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content">

    </androidx.constraintlayout.widget.ConstraintLayout>

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


    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:fabAlignmentMode="end"
        app:fabCradleMargin="4dp"
        app:hideOnScroll="true"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

<com.google.android.material.navigation.NavigationView
    android:id="@+id/navView_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/nav_header_layout"
    app:menu="@menu/main_navigation"/>
Run Code Online (Sandbox Code Playgroud)

我需要的是确保替换片段的任何内容都不应被底部应用栏覆盖,并且它应该使用底部应用栏未使用的所有空白区域。我是另一个世界,内容应该在它上面,同时使用其余的空白区域并且仍然在协调器布局内。

android material-design android-coordinatorlayout android-bottomappbar

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

Jetpack Compose 是底部导航栏吗?如何使用 bottomNavbar 任何示例?

我正在jectpack composeandroid 应用程序中工作。所以我想使用 use bottomAppbar。从来没有找到任何例子有人可以帮忙吗?

android android-bottomappbar android-jetpack-compose

6
推荐指数
2
解决办法
2958
查看次数

如何以编程方式显示/隐藏AppBottomBar?

我尝试使用AppBottomBar,并且希望能够像setExpanded在AppBarLayout中一样以编程方式隐藏或显示它。

我的布局就像

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/coordinator"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
          ...
    </com.google.android.material.appbar.AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:id="@+id/nested"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <fragment
            android:id="@+id/navHost"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/home_nav" />
    </androidx.core.widget.NestedScrollView>

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar"
        style="@style/Widget.MaterialComponents.BottomAppBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:backgroundTint="@color/colorPrimary"
        app:fabAlignmentMode="center"
        app:hideOnScroll="true"
        app:layout_scrollFlags="scroll|enterAlways"
        app:navigationIcon="@drawable/ic_menu"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

我尝试使用AppBottomBar的行为,但是不起作用。

android kotlin material-design android-bottomappbar

5
推荐指数
2
解决办法
480
查看次数

使用 BottomAppBar 或 BottomNavigationView 创建自定义底部视图

我想为测试 android 应用程序创建下面的视图。这些是我创建视图所遵循的当前步骤:

  1. 以协调器布局作为根元素创建布局文件。
  2. 添加底部栏并将其锚定到底部。
  3. 添加了一个浮动操作按钮并将其锚定到底部栏。
  4. 创建了一个包含三个菜单项的菜单资源文件。
  5. 将菜单项添加到底部栏。

在此处输入图片说明

当我运行应用程序时,视图如下图所示:

Android 模拟器镜像

我曾尝试使用底部导航视图,主浮动操作按钮被膨胀为菜单项中的操作布局。使用这种方法只允许显示菜单项及其测试,但不显示浮动操作按钮。

什么是最好的使用方法。使用BottomAppBar 或使用BottomNavigationView。我正在尝试查看是否可以使用可用的材料组件而无需执行 hack。

XML 文件如下:

活动主

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

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/bar"
        app:srcCompat="@mipmap/sharp_local_atm_black_24" />

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:fabAlignmentMode="center"
        app:fabCradleRoundedCornerRadius="0dp"
        app:fabCradleMargin="0dp"
        app:fabAnimationMode="slide"
        app:labelVisibilityMode="labeled"
        app:fabCradleVerticalOffset="8dp"
        app:menu="@menu/app_bar_menu"
       />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

菜单 XML:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/app_bar_home"
        android:icon="@mipmap/sharp_home_black_24"
        android:title="@string/home"
        app:showAsAction="always"/>

    <item
        android:id="@+id/app_bar_wallet"
        android:icon="@mipmap/sharp_account_balance_wallet_black_24"
        android:title="@string/wallet"
        app:showAsAction="always"/>

    <item
        android:id="@+id/app_bar_atm"
        android:title="CASH"
        app:showAsAction="always"/>

    <item
        android:id="@+id/app_bar_cart"
        android:icon="@mipmap/sharp_shopping_cart_black_24"
        android:title="@string/cart"
        app:showAsAction="always"/>

    <item
        android:id="@+id/app_bar_more"
        android:icon="@mipmap/sharp_menu_black_24"
        android:title="@string/more"
        app:showAsAction="always"/> …
Run Code Online (Sandbox Code Playgroud)

android bottomnavigationview android-bottomappbar

5
推荐指数
1
解决办法
2181
查看次数

空 NavHostFragment/NavController 与 FragmentContainerView

预期的

\n\n

使用导航 UI 创建底部应用程序栏导航BottomNavigationViewFragmentContainerView类似于示例应用程序NavigationAdvancedSample

\n\n

请注意,NavigationAndvancedSample应用程序似乎没有使用文档中描述的相同实现,因为它有一个使用自定义扩展方法的解决方法实现setupWithNavController

\n\n

观察到的

\n\n

使用.在MainActivity.ktNavHostFragment中创建 时为 Null 。BottomNavigationViewFragmentContainerView

\n\n

可重现的错误和完整的代码示例可在BottomNavigationViewSample存储库中找到。

\n\n

错误

\n\n
\n

2020-05-15 12:39:19.117 18747-18747/com.example.bottomnavigationviewsample E/AndroidRuntime: 致命异常: main\n 进程: com.example.bottomnavigationviewsample, PID: 18747\n java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.bottomnavigationviewsample/com.example.bottomnavigationviewsample.MainActivity}:kotlin.TypeCastException:null 无法转换为非 null 类型 androidx.navigation.fragment.NavHostFragment\n 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)\n 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)\n 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java :83)\n 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)\n 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)\n 在 android.app.ActivityThread$ H.handleMessage(ActivityThread.java:2016)\n 在 android.os.Handler.dispatchMessage(Handler.java:107)\n 在 android.os.Looper.loop(Looper.java:214)\n 在 android.app .ActivityThread.main(ActivityThread.java:7356)\n 在 …

android android-fragments android-navigation android-architecture-navigation android-bottomappbar

5
推荐指数
1
解决办法
6442
查看次数

什么是脚手架?喷气背包组合

我想知道什么是喷气背包中的 Scaffold 与一个BottomAppBar 示例 谁能帮助我 Scaffold

android android-bottomappbar android-jetpack-compose android-jetpack-compose-scaffold

5
推荐指数
1
解决办法
1561
查看次数

错误膨胀类 android.support.design.bottomappbar.BottomAppBar

我正在尝试从 material.io 测试 BottomAppBar 功能。但是,当我尝试运行应用程序时,我会立即崩溃:

> 10-20 22:21:25.067 27571-27571/com.example.asmox.bcl E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.asmox.bcl, PID: 27571
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.asmox.bcl/com.example.asmox.bcl.ViewActivity}: android.view.InflateException: Binary XML file line #33: Binary XML file line #33: Error inflating class android.support.design.bottomappbar.BottomAppBar
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.view.InflateException: Binary XML file line #33: Binary XML file line #33: Error inflating class android.support.design.bottomappbar.BottomAppBar
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) …
Run Code Online (Sandbox Code Playgroud)

android android-bottomappbar

4
推荐指数
2
解决办法
3946
查看次数