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

13

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

android.view.InflateException: Binary XML file line #26: Error inflating class 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 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);// getting error here


        return rootView;
    }


}

XML 代码:

<LinearLayout
        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">


        <ImageView
            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" />

        <TextView
            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" />


    </LinearLayout>

这段代码在Eclipse中可以正常工作,但在Studio中尝试时出现了问题。


请发布XML和全部内容。 - user1140237
请仔细检查您的XML文件,在其中声明TextView的位置,这意味着您在某个地方拼写错误。可能是忘记了一个字符或其他什么原因。 - Sbonelo
@user1140237 添加了 XML。 - Nama
你的 XML 我已经检查过了(假设根视图具有正确的命名空间),一旦清理并构建应用程序(制作项目),或者发布与片段事务相关的代码。 - user1140237
3
您缺少命名空间声明。请在LinearLayout中添加xmlns:android="http://schemas.android.com/apk/res/android" - Phantômaxx
显示剩余2条评论
8个回答

14

3
删除这个 android:textAppearance="?android:attr/textAppearanceMedium" 并尝试。 - M S Gadag
1
这个答案对我有帮助。 - Stephen
我解决了一个奇怪的问题,当我改变android:textSize这一行时,我直接放置了数值而不是从dimens xml文件中获取。就像这样:android:textSize="35sp" - Ciro Mine
@ M S Gadag,如果styles.xml中有“parent =”TextAppearance.Widget.AppCompat.Toolbar.Title“”这一行,我们需要做什么? - arshad shaikh

1

我清理了您的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="@drawable/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="@drawable/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>

由于您正在使用LinearLayout,因此诸如“android:layout_below”或“android:layout_centerHorizontal”之类的参数是无效的。

首先我尝试使用相对布局,所以我使用了layout_below参数。这是我的主xml的子元素,据我所知,对于子元素来说不需要再次添加命名空间。 - Nama
然后,您应该粘贴整个 XML 布局。否则会很混乱。 - Juanjo Vega

1
我遇到了同样的问题。请确保在任何一个布局中都没有 tools:targetApi="lollipop"。相反,应该有两个布局,一个在 layout 下,另一个在 layout-v21 文件夹下。

1
当我遇到这个问题时,我所做的就是删除android:drawableLeft语句。原来在早期版本的设备上为AutoCompleteTextView分配图像会导致问题。但在我的Lollipop手机上,它可以正常工作。 - FractalBob

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

0

检查您的主题父级。如果主题父级和样式父级之间存在不匹配,您将收到属性丢失或解析失败的错误。 在我的情况下,我正在使用一个父级主题:

Theme.AppCompat.DayNight.NoActionBar

但是在我的样式中,我使用了父元素:

TextAppearance.AppCompat.Widget.PopupMenu.Small

由于它们不同,导致了无法解析符号错误。 希望这可以帮到您。


0

您需要在项目的res-> font文件夹中创建另一个.xml文件。之后在.xml文件中调用字体文件。

<font
    android:font="@font/rubikbold"/>

这里,我在我的项目中有一个Robik粗体字文件。


0

似乎旧版本的Android不支持像这样的标签,

android:background="@drawable/rounded_corner"
android:textSize="?android:textAppearanceMedium"

在这种情况下,从XML文件中删除它,并尝试从Java或Kotlin代码中加载属性(最好放在try...catch或if...else语句内)

希望能有所帮助


-1

我遇到了类似的错误,但是我发现属性textAppearance没有正确书写。

最初使用的是android:textSize="?android:textAppearanceMedium"而不是android:textAppearance="?android:textAppearanceMedium"

你可以在这里阅读更多关于TextView的信息https://developer.android.com/reference/android/widget/TextView


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