悬浮按钮在安卓5.0以下版本无法使用

5

我在我的应用程序中使用了Android设计库的浮动操作按钮,它在Lollipop及以上版本上运行良好,但在早期版本(4.0-4.2.2)上崩溃。我真的卡住了,无法找出问题所在。

错误:

致命异常:主要的错误是二进制XML文件第396行,无法膨胀类android.support.design.widget.FloatingActionButton。在android.view.LayoutInflater.createView(LayoutInflater.java:619)中,android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693),android.view.LayoutInflater.rInflate(LayoutInflater.java:752),android.view.LayoutInflater.inflate(LayoutInflater.java:495),android.view.LayoutInflater.inflate(LayoutInflater.java:397),com.example.sony.bluedolphintrialapp.DhampureFragment.onCreateView(DhampureFragment.java:18),android.support.v4.app.Fragment.performCreateView(Fragment.java:1789),android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955),android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138),android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)等方法都出现了错误。android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501),android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)在后台运行,android.os.Handler.handleCallback(Handler.java:725),android.os.Handler.dispatchMessage(Handler.java:92),android.os.Looper.loop(Looper.java:137),android.app.ActivityThread.main(ActivityThread.java:5279),java.lang.reflect.Method.invokeNative(Native Method),java.lang.reflect.Method.invoke(Method.java:511),com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102),com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869),dalvik.system.NativeStart.main(Native Method)。造成此问题的原因是java.lang.reflect.InvocationTargetException,在java.lang.reflect.Constructor.constructNative(Native Method),java.lang.reflect.Constructor.newInstance(Constructor.java:417),android.view.LayoutInflater.createView(LayoutInflater.java:593),android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693),android.view.LayoutInflater.rInflate(LayoutInflater.java:752),android.view.LayoutInflater.inflate(LayoutInflater.java:495),android.view.LayoutInflater.inflate(LayoutInflater.java:397),com.example.sony.bluedolphintrialapp.DhampureFragment.onCreateView(DhampureFragment.java:18),android.support.v4.app.Fragment.performCreateView(Fragment.java:1789),android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955),android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138),android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740),android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501),android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458),android.os.Handler.handleCallback(Handler.java:725),android.os.Handler.dispatchMessage(Handler.java:92),android.os.Looper.loop(Looper.java:137),android.app.ActivityThread.main(ActivityThread.java:5279),java.lang.reflect.Method.invokeNative(Native Method),java.lang.reflect.Method.invoke(Method.java:511),com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102),com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869),dalvik.system.NativeStart.main(Native Method)。造成此问题的原因是android.content.res.Resources$NotFoundException:资源不是ColorStateList(颜色或路径):TypedValue{t=0x1/d=0x7f0b0008a=-1 r=0x7f0b0008},在android.content.res.Resources.loadColorStateList(Resources.java:2963),android.content.res.TypedArray.getColorStateList(TypedArray.java:343),android.support.design.widget.FloatingActionButton.(FloatingActionButton.java:8,android.support.design.widget.FloatingActionButton.(FloatingActionButton.java:77)。

带有浮动操作按钮的XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinatorLayout_signup"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.sony.bluedolphintrialapp.MainActivity">

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

        <RelativeLayout
            android:id="@+id/headerlayout"
            android:layout_width="fill_parent"
            android:layout_height="70dp"
            android:background="@color/backgroud_user"
            android:paddingBottom="10dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp">

            <TextView
                android:id="@+id/headertextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerInParent="true"
                android:text="@string/title"
                android:textColor="#FFF"
                android:textSize="22dp" />
        </RelativeLayout>

        <com.gc.materialdesign.views.ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/scroll"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/headerlayout"
            android:background="#F2F5F6">


            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="0sp"
                android:orientation="vertical">

                <TableLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:descendantFocusability="beforeDescendants"
                    android:focusableInTouchMode="true"
                    android:paddingBottom="60dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="10dp"
                    android:stretchColumns="0">


                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="2dp"
                        android:weightSum="1">


                        <TextView
                            android:id="@+id/currentlyEmployed_label"
                            android:layout_width="0dp"
                            android:layout_height="50dp"
                            android:layout_gravity="center"
                            android:layout_weight=".4"
                            android:padding="5dp"
                            android:textSize="15sp"
                            android:text="Channel Partner :"
                            android:textColor="@android:color/black" />

                        <com.gc.materialdesign.NewMaterials.Spinner
                            android:id="@+id/currentlyEmployed_spinner_id"
                            style="@style/Material.Widget.Spinner.Light"
                            android:layout_width="0dp"
                            android:layout_height="50dp"
                            android:layout_weight=".6"
                            app:rd_style="@style/Material.Drawable.Ripple.Wave.Light"
                            app:rd_enable="true"
                            app:rd_delayClick="false"
                            app:spn_labelEnable="true"
                            app:spn_label="Select"
                            app:spn_arrowSwitchMode="true"
                            android:padding="5dp"
                            app:spn_arrowAnimDuration="@android:integer/config_shortAnimTime"
                            app:spn_arrowInterpolator="@android:anim/decelerate_interpolator"/>

                    </TableRow>


                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="2dp"
                        android:weightSum="0.5">

                        <android.support.design.widget.TextInputLayout
                            android:id="@+id/signup_first_label"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:padding="5dp"
                            android:theme="@style/TextLabel"
                            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

                            <android.support.v7.widget.AppCompatEditText
                                android:id="@+id/addplaces_name"
                                android:layout_width="match_parent"
                                android:drawableLeft="@drawable/ic_action_person1"
                                android:drawableStart="@drawable/ic_action_person1"
                                android:layout_height="wrap_content"
                                android:layout_alignParentTop="true"
                                android:paddingLeft="3dp"
                                android:paddingStart="3dp"
                                android:paddingRight="3dp"
                                android:layout_centerHorizontal="true"
                                android:layout_marginTop="5dp"
                                android:drawablePadding="5dp"
                                android:hint="Name"
                                android:inputType="textPersonName" /></android.support.design.widget.TextInputLayout>
                    </TableRow>

                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_marginBottom="1dp"
                        android:weightSum="0.5">

                        <android.support.design.widget.TextInputLayout
                            android:id="@+id/Adress_first_label"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="1dp"
                            android:padding="3dp"
                            android:theme="@style/TextLabel"
                            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"><android.support.v7.widget.AppCompatEditText
                                android:id="@+id/adress_name"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:drawableLeft="@drawable/ic_action_time"
                                android:drawableStart="@drawable/ic_action_time"
                                android:layout_alignParentTop="true"
                                android:paddingLeft="3dp"
                                android:paddingStart="3dp"
                                android:paddingRight="3dp"
                                android:layout_centerHorizontal="true"
                                android:layout_marginTop="5dp"
                                android:drawablePadding="5dp"
                                android:hint="Start Time"
                                android:inputType="time|datetime" /></android.support.design.widget.TextInputLayout>
                    </TableRow>


                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_marginBottom="2dp"
                        android:weightSum="0.5">

                        <android.support.design.widget.TextInputLayout
                            android:id="@+id/mobileNo_first_label"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:padding="5dp"
                            android:theme="@style/TextLabel"
                            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"><android.support.v7.widget.AppCompatEditText
                                android:id="@+id/mobileNo_text"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:drawableLeft="@drawable/ic_action_time"
                                android:drawableStart="@drawable/ic_action_time"
                                android:layout_alignParentTop="true"
                                android:paddingLeft="3dp"
                                android:paddingStart="3dp"
                                android:paddingRight="3dp"
                                android:layout_centerHorizontal="true"
                                android:layout_marginTop="5dp"
                                android:drawablePadding="5dp"
                                android:hint="End Time"
                                android:inputType="text|textPostalAddress" /></android.support.design.widget.TextInputLayout>
                    </TableRow>


                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_marginBottom="2dp"
                        android:weightSum="0.5">

                        <android.support.design.widget.TextInputLayout
                            android:id="@+id/email_label"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:padding="5dp"
                            android:theme="@style/TextLabel"
                            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"><android.support.v7.widget.AppCompatEditText
                                android:id="@+id/email_Text"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:drawableLeft="@drawable/ic_action_time"
                                android:layout_alignParentTop="true"
                                android:paddingLeft="3dp"
                                android:paddingStart="3dp"
                                android:paddingRight="3dp"
                                android:layout_centerHorizontal="true"
                                android:layout_marginTop="5dp"
                                android:drawablePadding="5dp"
                                android:hint="Actual Start Time"
                                android:inputType="text|textPostalAddress" /></android.support.design.widget.TextInputLayout>
                    </TableRow>

                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_marginBottom="2dp"
                        android:weightSum="0.5">

                        <android.support.design.widget.TextInputLayout
                            android:id="@+id/notes_first_label"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:padding="5dp"
                            android:theme="@style/TextLabel"
                            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"><android.support.v7.widget.AppCompatEditText
                                android:id="@+id/notes_text"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_alignParentTop="true"
                                android:drawableLeft="@drawable/ic_action_time"
                                android:paddingLeft="3dp"
                                android:paddingStart="3dp"
                                android:paddingRight="3dp"
                                android:layout_centerHorizontal="true"
                                android:layout_marginTop="5dp"
                                android:drawablePadding="5dp"
                                android:hint="Actual End Time"
                                android:inputType="text|textPostalAddress" /></android.support.design.widget.TextInputLayout>
                    </TableRow>

                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_marginBottom="2dp"
                        android:weightSum="0.5">

                        <android.support.design.widget.TextInputLayout
                            android:id="@+id/variance_field"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="2dp"
                            android:padding="5dp"
                            android:theme="@style/TextLabel"
                            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"><android.support.v7.widget.AppCompatEditText
                                android:id="@+id/variance_text"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_alignParentTop="true"
                                android:drawableLeft="@drawable/ic_action_error"
                                android:paddingLeft="3dp"
                                android:paddingStart="3dp"
                                android:paddingRight="3dp"
                                android:layout_centerHorizontal="true"
                                android:layout_marginTop="5dp"
                                android:drawablePadding="5dp"
                                android:hint="Variance"
                                android:inputType="text|textPostalAddress" /></android.support.design.widget.TextInputLayout>
                    </TableRow>

                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_marginBottom="3dp"
                        android:weightSum="0.5">

                        <com.dd.CircularProgressButton
                            android:id="@+id/Button_id"
                            android:layout_width="0dp"
                            android:layout_height="50dp"
                            android:text="Start"
                            android:padding="5dp"
                            android:layout_weight=".5"
                            android:gravity="center|center_horizontal"
                            android:layout_below="@+id/personmobile_id"
                            android:layout_marginTop="7sp"
                            android:layout_marginLeft="30dp"
                            android:layout_marginRight="30dp"
                            android:textSize="15sp"
                            android:textColor="#FFFFFF"
                            app:cpb_cornerRadius="100dp"
                            app:cpb_selectorComplete="@color/STOPbutton"
                            app:cpb_selectorIdle="@color/backgroud_user"
                            app:cpb_selectorError="@color/sienna"
                            app:cpb_textComplete="STOP"
                            app:cpb_textIdle="START"/>

                    </TableRow>

                    <TableRow
                        android:layout_width="20dp"
                        android:layout_height="0dp"
                        android:layout_marginBottom="3dp"
                        android:weightSum="0.5">

                    <TextView
                        android:id="@+id/timertext"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="00:00"
                        android:textColor="?colorPrimary"
                        android:textStyle="bold"
                        android:layout_gravity="center"
                        android:textSize="25sp"
                        />
                    </TableRow>

                </TableLayout>


            </RelativeLayout>
        </com.gc.materialdesign.views.ScrollView>

    </RelativeLayout>

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        app:fab_iconSize="@dimen/fab_size_mini"
        android:layout_margin="@dimen/fab_margin"
        android:layout_gravity="end|bottom|right"
        android:src="@drawable/ic_format_list_bulleted_white_48dp"
        app:rippleColor="@android:color/white"
        android:layout_alignParentBottom="true"
        app:backgroundTint="@color/green_dark"
        android:layout_centerHorizontal="true"
        app:elevation="6dp"
        app:pressedTranslationZ="25dp"/>

</android.support.design.widget.CoordinatorLayout>

你的第396行是什么? - justDroid
@justDroid,显然这是浮动按钮标签。 - young_08
1
这是由于android.content.res.Resources$NotFoundException引起的:资源不是ColorStateList。可能您在那里提供了一些错误的资源引用。 - justDroid
1
问题是,颜色应该从自己的资源@color/white中设置,而不是从Android的资源@android:color/white中设置。很奇怪。 - Marko
@Marko:是的,它解决了我的问题。非常感谢您的帮助。非常感激!!! - young_08
@justDroid 是的,你说得对!问题不在于我没有从自己的资源中获取颜色,这一点我通过马尔科的评论已经弄清楚了。但是非常感谢你的帮助。 - young_08
1个回答

3
问题出在设置 FloatingActionButton 的颜色上。使用我们自己资源中的颜色(而不是 Android 的颜色),会解决这个问题。
所以,应该改为:
app:rippleColor="@android:color/white"

应该是这样的

app:rippleColor="@color/white"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接