android.view.InflateException:二进制 XML 文件行 #39:膨胀 class ProgressWidget 时出错
android.view.InflateException: Binary XML file line #39: Error inflating class ProgressWidget
public final class ProgressWidget extends LinearLayout {
<Default Constructors implemented> {
setOrientation(LinearLayout.VERTICAL);
inflate(context, R.layout.horizontal_progress, this);
}
@Override
protected void onFinishInflate() {
//Continue with rest of the logic.
}
}
R.layout.horizontal_progress 有 35 行。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/progressTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_white_background"
android:gravity="center"
android:textColor="@color/light_black"
android:textSize="12sp"
android:fontFamily="roboto-regular"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingRight="2dp" />
<SeekBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="@dimen/horizontal_progress_height"
android:indeterminate="false"
android:progressDrawable="@drawable/horizontal_progress"
android:gravity="center"
android:thumb="@null"
android:progress="0"
android:secondaryProgress="0"
android:max="100"
android:minHeight="@dimen/horizontal_progress_height"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingRight="2dp" />
</merge>
R.drawable.horizontal_progress 有 36 行。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<item android:id="@android:id/background">
<shape android:shape="rectangle" >
<corners android:radius="@dimen/horizontal_progress_radius" />
<gradient
android:startColor="@color/horizontal_progress_background"
android:endColor="@color/horizontal_progress_background"
android:angle="270"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape android:shape="rectangle" >
<corners android:radius="@dimen/horizontal_progress_radius" />
<gradient
android:startColor="@android:color/white"
android:endColor="@android:color/white"
android:angle="270"/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape android:shape="rectangle" >
<corners android:radius="@dimen/horizontal_progress_radius" />
<gradient
android:startColor="?android:attr/colorAccent"
android:endColor="?android:attr/colorAccent"
android:angle="270"
tools:ignore="NewApi"/>
</shape>
</clip>
</item>
</layer-list>
堆栈跟踪的最后一段。
原因:android.view.InflateException:二进制 XML 文件行 #39:膨胀 class ProgressWidget 时出错
在 android.view.LayoutInflater.createView(LayoutInflater.java:620)
在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
在 android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
在 android.view.LayoutInflater.inflate(LayoutInflater.java:462)
在 android.view.LayoutInflater.inflate(LayoutInflater.java:397)
在 android.view.LayoutInflater.inflate(LayoutInflater.java:353)
在 android.view.View.inflate(View.java:1746
在 Phone 设备上一切正常 - Samsung Galaxy S5 SM-G900A,Android 版本 5.0。总是在 Asus Nexus 7 上使用上述堆栈跟踪崩溃,Android 4.4.3.
此 ProgressWidget 是 Android 库模块的自定义可重用组件,将与项目模块一起使用。预计主要项目模块将满足 minSDKVersion 16 一直到 TargetSDKVersion 24 的要求。
任何有关可能导致仅在平板设备上崩溃的原因的指示将不胜感激。
尝试更改最后一个渐变(具有 tools:ignore="NewApi"
线的那个)中的颜色。这两种颜色在 SDK<21 中没有定义。
如果这不能解决问题,请 post 更多堆栈跟踪。
我根据另一个类似问题设法解决了这个问题。
public final class ProgressWidget extends LinearLayout {
<Default Constructors implemented> {
setOrientation(LinearLayout.VERTICAL);
inflate(context, R.layout.horizontal_progress, this);
}
@Override
protected void onFinishInflate() {
//Continue with rest of the logic.
}
}
R.layout.horizontal_progress 有 35 行。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/progressTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_white_background"
android:gravity="center"
android:textColor="@color/light_black"
android:textSize="12sp"
android:fontFamily="roboto-regular"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingRight="2dp" />
<SeekBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="@dimen/horizontal_progress_height"
android:indeterminate="false"
android:progressDrawable="@drawable/horizontal_progress"
android:gravity="center"
android:thumb="@null"
android:progress="0"
android:secondaryProgress="0"
android:max="100"
android:minHeight="@dimen/horizontal_progress_height"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingRight="2dp" />
</merge>
R.drawable.horizontal_progress 有 36 行。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<item android:id="@android:id/background">
<shape android:shape="rectangle" >
<corners android:radius="@dimen/horizontal_progress_radius" />
<gradient
android:startColor="@color/horizontal_progress_background"
android:endColor="@color/horizontal_progress_background"
android:angle="270"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape android:shape="rectangle" >
<corners android:radius="@dimen/horizontal_progress_radius" />
<gradient
android:startColor="@android:color/white"
android:endColor="@android:color/white"
android:angle="270"/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape android:shape="rectangle" >
<corners android:radius="@dimen/horizontal_progress_radius" />
<gradient
android:startColor="?android:attr/colorAccent"
android:endColor="?android:attr/colorAccent"
android:angle="270"
tools:ignore="NewApi"/>
</shape>
</clip>
</item>
</layer-list>
堆栈跟踪的最后一段。
原因:android.view.InflateException:二进制 XML 文件行 #39:膨胀 class ProgressWidget 时出错 在 android.view.LayoutInflater.createView(LayoutInflater.java:620) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:462) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:397) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:353) 在 android.view.View.inflate(View.java:1746
在 Phone 设备上一切正常 - Samsung Galaxy S5 SM-G900A,Android 版本 5.0。总是在 Asus Nexus 7 上使用上述堆栈跟踪崩溃,Android 4.4.3.
此 ProgressWidget 是 Android 库模块的自定义可重用组件,将与项目模块一起使用。预计主要项目模块将满足 minSDKVersion 16 一直到 TargetSDKVersion 24 的要求。
任何有关可能导致仅在平板设备上崩溃的原因的指示将不胜感激。
尝试更改最后一个渐变(具有 tools:ignore="NewApi"
线的那个)中的颜色。这两种颜色在 SDK<21 中没有定义。
如果这不能解决问题,请 post 更多堆栈跟踪。
我根据另一个类似问题设法解决了这个问题。