二进制XML文件第26行:解析android.widget.TextView类时出错

5 浏览
0 Comments

二进制XML文件第26行:解析android.widget.TextView类时出错

我正在使用Android Studio,当我在我的布局中使用TextView时,应用程序关闭并显示错误:

android.view.InflateException:二进制XML文件第26行:膨胀类android.widget.TextView
            at android.view.LayoutInflater.createView(LayoutInflater.java:633)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at com.SubFragment.onCreateView(SubFragment.java:20)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
            at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
            at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
            at android.view.View.measure(View.java:17430)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            at android.view.View.measure(View.java:17430)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
            at android.view.View.measure(View.java:17430)

并且在我的Fragment类中:

public class SubFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_homescreen, container, false);// 这里出现错误
        return rootView;
    }
}

XML代码:

android:layout_margin="10dp"

android:layout_width="match_parent"

android:orientation="vertical"

android:gravity="center_vertical|center_horizontal"

android:layout_height="0dp"

android:layout_weight="1"

android:background="@drawable/offers">

android:id="@+id/imageButtonOffers"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:src="@drawable/offers_icon" />

android:id="@+id/textViewOffers"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/imageButtonOffers"

android:layout_centerHorizontal="true"

android:layout_marginTop="5dp"

android:gravity="center_horizontal"

android:text="Offer"

android:textAppearance="?android:attr/textAppearanceMedium"

android:textColor="@color/white"

android:textSize="15sp" />

这段代码在eclipse中工作得很好。只有在我尝试在Studio中工作时才出现问题。

0
0 Comments

在开发过程中,我也遇到了这个错误。通过重新创建一个包含TextView的新的.xml文件来解决了这个问题。在我的情况下,错误出现在xml版本(v21\abc.xml)上。代码在Android 6(棉花糖)版本上运行良好,而在Android 4.4(奇巧)版本上运行时会抛出错误。

0
0 Comments

出现这个问题的原因是在xml布局文件中,TextView的属性值设置不正确。

解决方法是将TextView的属性值修改为正确的值。

修改后的xml布局文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_margin="10dp"
    android:layout_weight="1"
    android:background="/offers"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical" >
<ImageView
    android:id="@+id/imageButtonOffers"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="/offers_icon" />
<TextView
    android:id="@+id/textViewOffers"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:gravity="center_horizontal"
    android:text="Offer"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/white"
    android:textSize="15sp" />
</LinearLayout>

通过修改属性值,可以解决这个问题。

0
0 Comments

在Android开发中,有时候会遇到"Binary XML file line #26: Error inflating class android.widget.TextView"的问题。这个问题的原因可能是以下几点:

1. XML文件中的android:background属性的值为"/offers",可能是一个图片,并且这个图片的尺寸大于屏幕的尺寸。解决方法是将这个属性的值改为一个颜色代码,比如"#ff0000"。

2. 可能还有其他的问题导致了这个错误,可以参考stackoverflow上的相关问题android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>来寻找解决方法。

3. XML文件中的android:textAppearance属性的值为"?android:attr/textAppearanceMedium",可能也会导致这个错误。尝试将这个属性移除,然后再次运行程序。

4. 有一位开发者解决了一个奇怪的问题,他在改变android:textSize属性时,直接将数值写死在XML文件中,而不是从dimens.xml文件中引用。他将android:textSize的值改为"35sp"后问题解决。

对于一位开发者提出的问题,如果styles.xml文件中有"parent="TextAppearance.Widget.AppCompat.Toolbar.Title""这一行,应该怎么处理呢?目前还没有具体的解决方法。

0