浮动操作按钮不在API上渲染< 21

时间:2017-12-07 19:16:34

标签: java android xml api material-design

编辑:我已更新到最新的Android支持库,但仍然收到错误。

我知道这个问题是多余的,我已经研究过关于SO的所有问题,但我仍然无法确定为什么我的FAB没有在API 19上呈现。我知道API 21有相当大的变化,并且向后兼容性已得到解决使用AppCompat库。我也理解所需的关键变化正在改变

        android:backgroundTint="@color/actionRed"

            app:backgroundTint="@color/actionRed"

我已经完成了。

这可能与我的主题有关,因为我仍在学习Android主题和材料设计的基础知识。下面是描述我的库,XML和我收到的错误的所有相关代码:

Manifest(我之前使用的是NoActionBar主题,尝试更改为Theme.AppCompat):

    <application
    android:name="android.support.multidex.MultiDexApplication"
    android:allowBackup="true"
    android:icon="@drawable/xxxxxxxx"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat"> 

XML:

        <android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.FloatingActionButton
        android:visibility="visible"
        android:id="@+id/myFAB"
        android:clickable="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:backgroundTint="@color/actionRed"
        android:layout_gravity="bottom|end"
        android:layout_marginEnd="6dp"
        android:layout_marginRight="6dp"
        android:layout_marginBottom="6dp"
        app:srcCompat="@drawable/ic_add_white_24dp"
        app:elevation="4dp"
        />

App-Level Gradle:

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'

defaultConfig {
    vectorDrawables.useSupportLibrary = true
    applicationId "xxxxxxxxxxxx"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    multiDexEnabled true

}


    // Support library
compile "com.android.support:design:$supportLibVersion"
compile "com.android.support:cardview-v7:$supportLibVersion"
compile "com.android.support:support-v4:$supportLibVersion"
compile "com.android.support:appcompat-v7:$supportLibVersion"

Root Gradle:

ext {
supportLibVersion = "27.0.2"
playServicesVersion = "11.4.2"
  }

Drawable(是因为我使用自己的FAB图像吗?我想要一个带有白色&#34; +&#34;符号)的红色按钮:

enter image description here

错误:

1:28.981 3807-3807/? E/AndroidRuntime: FATAL EXCEPTION: main
                                             Process: xxxxxxxxxxxxx, PID: 3807
                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.troychuinard.fanpolls/com.troychuinard.fanpolls.HomeActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.design.widget.FloatingActionButton
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
                                                 at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:136)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                 at dalvik.system.NativeStart.main(Native Method)
                                              Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.design.widget.FloatingActionButton
                                                 at android.view.LayoutInflater.createView(LayoutInflater.java:620)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                 at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
                                                 at com.troychuinard.fanpolls.HomeActivity.onCreate(HomeActivity.java:66)
                                                 at android.app.Activity.performCreate(Activity.java:5231)
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                                                 at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:136) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                 at dalvik.system.NativeStart.main(Native Method) 
                                              Caused by: java.lang.reflect.InvocationTargetException
                                                 at java.lang.reflect.Constructor.constructNative(Native Method)
                                                 at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
                                                 at android.view.LayoutInflater.createView(LayoutInflater.java:594)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                 at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
                                                 at com.troychuinard.fanpolls.HomeActivity.onCreate(HomeActivity.java:66) 
                                                 at android.app.Activity.performCreate(Activity.java:5231) 
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                                                 at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:136) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                 at dalvik.system.NativeStart.main(Native Method) 
                                              Caused by: java.lang.NoSuchMethodError: android.support.v4.content.res.ConfigurationHelper.getScreenWidthDp
                                                 at android.support.design.widget.FloatingActionButton.getSizeDimension(FloatingActionButton.java:442)
                                                 at android.support.design.widget.FloatingActionButton.getSizeDimension(FloatingActionButton.java:434)
                                                 at android.support.design.widget.FloatingActionButton$ShadowDelegateImpl.getRadius(FloatingActionButton.java:819)
                                                 at android.support.design.widget.FloatingActionButtonGingerbread.setBackgroundDrawable(FloatingActionButtonGingerbread.java:92)
                                                 at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:181)
                                                 at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:153)
                                                 at java.lang.reflect.Constructor.constructNative(Native Method) 
                                                 at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                                                 at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                 at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
                                                 at com.troychuinard.fanpolls.HomeActivity.onCreate(HomeActivity.java:66) 
                                                 at android.app.Activity.performCreate(Activity.java:5231) 
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                                                 at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:136) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                 at 
dalvik.system.NativeStart.main(Native Method) 
12-06 23:41:28.981 569-870/? W/ActivityManager:   Force finishing 
activity xxxxxxxxxxxx/.HomeActivity

任何帮助,材料设计资源,AppCompat,向后兼容性或任何相关建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您必须替换:

android:src

使用:

app:srcCompat