如何将bottomAppBar放置在布局中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将bottomAppBar放置在布局中相关的知识,希望对你有一定的参考价值。

我目前正在开发一个使用底部应用栏作为主导航的项目。但即使我从示例源代码中复制粘贴,我总是会收到错误

这是我的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    tools:context=".MainActivity">

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.bottomappbar.BottomAppBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"></com.google.android.material.bottomappbar.BottomAppBar>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

</LinearLayout>

这是我的gradle依赖项

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.12'
    implementation 'com.google.android.material:material:1.1.0-alpha05'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

这是我得到的错误

Binary XML file line #14: Binary XML file line #14: Error inflating class com.google.android.material.bottomappbar.BottomAppBar
答案

根据this网站:将targetSdkVersion设置为针对Android P的最新API版本,即28,并确保您的应用继承Theme.MaterialComponents主题,以使BottomAppBar使用最新的样式。或者,您可以在布局xml文件中的窗口小部件声明中声明BottomAppBar的样式,如下所示:style="@style/Widget.MaterialComponents.BottomAppBar"

另一答案

我最近解决了这个问题。你需要添加依赖性

implementation 'com.google.android.material:material:1.0.0

然后将<com.google.android.material.bottomnavigation.BottomNavigationView添加到XML布局文件中。

它对我有用

<?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" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <com.google.android.material.bottomnavigation.BottomNavigationView
            android:layout_width="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_height="wrap_content" android:id="@+id/vBottomBar"
            app:layout_constraintHorizontal_bias="0.0"/>
    <FrameLayout
            android:layout_width="0dp"
            android:layout_height="0dp" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toTopOf="@+id/vBottomBar" android:id="@+id/vContainer">

    </FrameLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
另一答案

昨晚我找到了问题的解决方案。我的问题是我用的

implementation 'com.google.android.material:material:1.1.0-alpha05'

而且那个版本仍然是alpha并且不稳定。所以我把它降级为

implementation 'com.google.android.material:material:1.0.0'

一切都像黄油一样顺畅

以上是关于如何将bottomAppBar放置在布局中的主要内容,如果未能解决你的问题,请参考以下文章

放置图标的底部应用栏问题

使用 BottomAppBar 材料设计组件的片段过渡

AsyncTask 中代码崩溃的旋转屏幕

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

在 FAB 单击时导航到片段(导航架构组件)

将视图粘贴在协调器布局内的 viewpager 片段的底部