android - Material 组件底部导航 View

标签 android xml android-layout gradle androidx

我目前在我的应用程序中使用新的 Material 组件库,我已经迁移了实现以开始使用androidx。但是,目前,在实现底部导航 View 方面我面临挑战。

我的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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">

    <!--<include-->
        <!--layout="@layout/toolbar"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="wrap_content"-->
        <!--app:layout_constraintEnd_toEndOf="parent"-->
        <!--app:layout_constraintStart_toStartOf="parent"-->
        <!--app:layout_constraintTop_toTopOf="parent" />-->


    <FrameLayout
        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">

        <!-- Main content -->

        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@color/colorPrimary"
            style="@style/Widget.MaterialComponents.BottomNavigationView"
            />

    </FrameLayout>

</android.support.constraint.ConstraintLayout>

我的应用程序gradle如下:
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.donworryaboutit.testapp"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    buildToolsVersion '28.0.2'
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    def room_version = "1.1.1"
    def lifecycle_version = "1.1.1"
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-rc02'
    //    implementation 'com.android.support:design:28.0.0-rc02'
    implementation 'com.google.android.material:material:1.0.0-rc02'
    implementation 'androidx.recyclerview:recyclerview:1.0.0-rc02'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
    // lifecycle components
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
    kapt "androidx.lifecycle:lifecycle-compiler:2.0.0-rc01"
    // use kapt for Kotlin
    // room components
    implementation 'androidx.room:room-runtime:2.0.0-rc01'
    kapt "androidx.room:room-compiler:2.0.0-rc01"
    // use kapt for Kotlin
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'

我一直在使用[ Material 库链接] [1作为指南。
我现在收到以下错误消息:
java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener
    at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:180)
    at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:61)
    at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:118)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.jetbrains.android.uipreview.ModuleClassLoader.loadClass(ModuleClassLoader.java:213)
    at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:172)
    at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:114)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:481)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:264)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:222)
    at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:209)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:337)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:348)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:248)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:837)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:866)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:837)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:325)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:544)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$3(RenderTask.java:678)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

最佳答案

开始使用Androidx时出现相同的错误,只是删除了

style="@style/Widget.MaterialComponents.BottomNavigationView"



然后自己使用选择器(如guide)设置样式。

Here是样式XML,如果您想获取一些属性

关于android - Material 组件底部导航 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52273241/

相关文章:

java - 如果我使用权重布局,那么我的Java文件无法通过id找到 View

java - 选项卡式 Activity 中 fragment 之间的交互

android - 在 L 预览中使用 Material 主题

android - 使用 FFmpeg 合并 2 个 mp3 文件

java - 无法解析符号 'IOUtils'

java - 如何将 XSD 类型导入根模式?

android - 微调器,可以在背景中看到字符串

ruby - 使用 SaxMachine 解析大文件似乎是将整个文件加载到内存中

c# - 元素 http ://www. w3.org/2001/XMLSchema:complexType 在此上下文中无效

android - 将gridLayout的高度设置为wrap_content后 View 消失