扩展类android.support.design.widget.FloatingActionButton时出错

Van*_*hel 31 android runtimeexception floating-action-button

我的应用程序崩溃是因为

扩展类android.support.design.widget.FloatingActionButton时出错

这是我在XML中的代码

<android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/icon_right"
        app:backgroundTint="@color/green"
        android:onClick="previewphoto"
        app:layout_anchorGravity="bottom|right|end" />
Run Code Online (Sandbox Code Playgroud)

这是我的傻瓜

compile 'com.android.support:appcompat-v7:23.4.0' // appcompat library
compile 'com.android.support:design:23.4.0'
Run Code Online (Sandbox Code Playgroud)

我的logcat

致命异常:主要过程:com.cyanlabsid.cetakphoto,PID:15298了java.lang.RuntimeException:无法启动活动ComponentInfo {com.cyanlabsid.cetakphoto/com.cyanlabsid.cetakphoto.PhotoPicker}:android.view.InflateException:二进制XML文件行#76:二进制XML文件行#76:错误充气类android.support.design.widget.FloatingActionButton在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423)在android.app.ActivityThread.handleLaunchActivity(ActivityThread. java:2483)在Android.app.Handler.dispatchMessage(Handler.java:)的android.app.ActivityThread.access $ 900(ActivityThread.java:153)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1349) 102)在android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5441),位于com.android的java.lang.reflect.Method.invoke(Native Method) .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:738)at com.android.internal.os.ZygoteInit.main(ZygoteInit.ja va:628)由以下原因引起:android.view.InflateException:二进制XML文件行#76:二进制XML文件行#76:在android.view.LayoutInflater.inflate(LayoutInflater)中输出类android.support.design.widget.FloatingActionButton时出错.的java:543)在android.view.LayoutInflater.inflate(LayoutInflater.java:427)在android.view.LayoutInflater.inflate(LayoutInflater.java:374)在android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java :284)在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)在com.cyanlabsid.cetakphoto.PhotoPicker.onCreate(PhotoPicker.java:74)在android.app.Activity.performCreate(活动.的java:6303)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)在android.app.ActThread.access $ 900(ActivityThread.java:153)在android.app.Act ivityThread $ H.handleMessage(ActivityThread.java:1349)位于android.app.A.Toread.main的android.os.Handler.dispatchMessage(Handler.java:102)android.os.Looper.loop(Looper.java:148) (ActivityThread.java:5441)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:738)在com.android.internal.os .ZygoteInit.main(ZygoteInit.java:628)

有人能说出我的错吗?

小智 51

使用

app:backgroundTint
Run Code Online (Sandbox Code Playgroud)

代替

android:backgroundTint
Run Code Online (Sandbox Code Playgroud)

希望它会奏效.


小智 20

因为android:backgroundTint在Android API 21下面不起作用,所以你需要使用app:backgroundTint.


Dus*_*Dus 14

试过你的代码,问题在于23.4.0库.

升级到24. +,该lib没有错误.

例如 :

implementation 'com.android.support:appcompat-v7:24.2.1' // appcompat library
implementation 'com.android.support:design:24.2.1'
Run Code Online (Sandbox Code Playgroud)

您还需要将编译版本更改为24.

compileSdkVersion 24
Run Code Online (Sandbox Code Playgroud)

  • 使用版本27,仍然是同样的问题 (7认同)
  • 只需要使用app:backgroundTint而不是android:backgroundTint就可以一直使用 (2认同)

Ash*_*kol 12

以下API级别21应用程序版本不支持

app:backgroundTint="@color/green"
Run Code Online (Sandbox Code Playgroud)

或者您可以使用此库来实现更多材质设计小部件.

https://github.com/navasmdc/MaterialDesignLibrary

快乐的编码......


Rav*_*ine 9

我有同样的问题

我遇到了与Pre-Lolipop版本相同的问题并解决了它,我只是将" android:src " 更改为" app:srcCompat "并且它对我有用.

为了与旧版本兼容,如果您使用矢量图形(作为可绘制资源),您应该使用:

app:srcCompat="@drawable/you_graphics"
Run Code Online (Sandbox Code Playgroud)

代替:

android:src="@drawable/your_graphics"
Run Code Online (Sandbox Code Playgroud)


Muh*_*mir 7

您需要添加

android:theme =“ @ style / Theme.AppCompat”

在使用FloatingActionButton的XML_Layout文件中...


use*_*844 5

我在用:

类路径 'com.android.tools.build:gradle:3.3.2'

distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all.zip

我将我的 XML 更改为:

<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:clickable="true"
        android:focusable="true"
        app:srcCompat="@drawable/mapit"
        app:layout_anchor="@id/foundit_imageView"
        app:layout_anchorGravity="bottom|right|end" />
Run Code Online (Sandbox Code Playgroud)

一切都正确构建和运行。

我希望这有帮助