扩展类android.support.design.widget.FloatingActionButton

时间:2017-02-14 08:49:33

标签: android floating-action-button runtimeexception

我的应用程序崩溃是因为

  

错误类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" />

这是我的gradle

compile 'com.android.support:appcompat-v7:23.4.0' // appcompat library
compile 'com.android.support:design:23.4.0'

我的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 at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423)   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)   在android.app.ActivityThread.access $ 900(ActivityThread.java:153)at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1349)   在android.os.Handler.dispatchMessage(Handler.java:102)at   android.os.Looper.loop(Looper.java:148)at   android.app.ActivityThread.main(ActivityThread.java:5441)at   java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:738)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)引起   by:android.view.InflateException:二进制XML文件行#76:二进制   XML文件行#76:错误类膨胀   android.support.design.widget.FloatingActionButton at   android.view.LayoutInflater.inflate(LayoutInflater.java:543)at   android.view.LayoutInflater.inflate(LayoutInflater.java:427)at   android.view.LayoutInflater.inflate(LayoutInflater.java:374)at   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(Activity.java:6303)at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)   在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)   在android.app.ActivityThread.access $ 900(ActivityThread.java:153)at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1349)   在android.os.Handler.dispatchMessage(Handler.java:102)at   android.os.Looper.loop(Looper.java:148)at   android.app.ActivityThread.main(ActivityThread.java:5441)at   java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:738)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

有人能说出我的错吗?

12 个答案:

答案 0 :(得分:50)

使用

app:backgroundTint

代替

android:backgroundTint

希望它能奏效。

答案 1 :(得分:19)

由于android:backgroundTint在Android API 21下无效,因此您需要使用app:backgroundTint

答案 2 :(得分:12)

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

升级到24. +,该库中没有错误。

例如:

implementation 'com.android.support:appcompat-v7:24.2.1' // appcompat library
implementation 'com.android.support:design:24.2.1'

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

compileSdkVersion 24

答案 3 :(得分:12)

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

app:backgroundTint="@color/green"

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

  

https://github.com/navasmdc/MaterialDesignLibrary

快乐的编码......

答案 4 :(得分:8)

我遇到了同样的问题

我遇到了与Pre-Lolipop版本相同的问题并解决了它,我只是将“ android:src ”改为“ app:srcCompat ”&amp;它对我有用。

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

app:srcCompat="@drawable/you_graphics"

而不是:

android:src="@drawable/your_graphics"

答案 5 :(得分:5)

您需要添加

  

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

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

答案 6 :(得分:2)

我正在使用:

classpath'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" />

一切都正确构建并运行。

我希望这对您有帮助

答案 7 :(得分:2)

 <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:src="@drawable/ic_add_foreground"
        android:layout_margin="16dp" />

使用此

 <com.google.android.material.floatingactionbutton.FloatingActionButton>

代替

<android.support.design.widget.FloatingActionButton>

答案 8 :(得分:1)

使用此代码会更好;

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="16dp"
        app:backgroundTint="#f9fcfc"

        android:src="@drawable/chat_float"
        tools:targetApi="lollipop" />

答案 9 :(得分:1)

确保在活动中声明 FloatingActionButton 的库与用于布局标记的库相同

例如有

在活动中导入com.google.android.material.floatingactionbutton.FloatingActionButton; com.google.android.material.floatingactionbutton.FloatingActionButton 作为布局的标记

答案 10 :(得分:0)

我在我的ExtendedFloatingActionButton中使用了Material Design,并且在使用API​​ 24时会导致应用崩溃。

我尝试将gradle依赖项更新为最新版本:

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0-alpha02'

但是我也没有运气。我的解决方案是添加android:theme="",即使我设置了样式仍然会崩溃,所以我将主题设置为与样式相同,并且效果很好。

<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
                    android:id="@+id/btn_one"
                    android:theme="@style/"
                    style="@style/"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:contentDescription="@string/text"
                    android:text="@string/text"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

答案 11 :(得分:0)

添加

build.gradle(:app)

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

在XML中使用它

<com.google.android.material.floatingactionbutton.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" />