为什么在使用自定义背景填充 textview 时会出现错误?

问题描述

我正在尝试扩充一个 XML,作为 RecyclerView 的一个项目,该 XML 是带有两个 TextView 的约束布局 两个 TextViews 的背景与我创建的相同,它位于 drawable 文件夹中,并且是一个矩形形状,以便在 textviews 周围创建框架线。

但是当我运行该应用程序时,出现此错误:

Binary XML file line #9: Error inflating class TextView

通过阅读类似的问题,我发现这可能是由于 textview 的某些属性而发生的,在我的情况下,当我从 textview 中删除这些背景时,膨胀有效,一切正常。

谁能解释为什么会这样? XML、可绘制形状和错误如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >

    <TextView
        android:id="@+id/country_name"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:textSize="15sp"
        android:text="@string/countryname"
        android:padding="4dp"
        app:layout_constraintHorizontal_weight="50"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/native_name"
        android:gravity="center_horizontal"
        android:background="@drawable/border"
        />

    <TextView
        android:id="@+id/native_name"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:textSize="15sp"
        android:text="@string/nativename"
        android:padding="4dp"
        app:layout_constraintHorizontal_weight="50"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toRightOf="@id/country_name"
        android:gravity="center_horizontal"
        android:background="@drawable/border"
        />


</androidx.constraintlayout.widget.ConstraintLayout>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="@android:color/transparent" />
    <stroke android:width="1dp" android:color="#128FD5"/>
</shape>

堆栈跟踪:

Process: com.example.mydemoproj,PID: 7844
    android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class TextView
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at com.example.mydemoproj.CountriesRecyclerView.RecyclerViewAdaper.onCreateViewHolder(RecyclerViewAdaper.kt:18)
        at com.example.mydemoproj.CountriesRecyclerView.RecyclerViewAdaper.onCreateViewHolder(RecyclerViewAdaper.kt:12)
        at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
        at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1732)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1497)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:530)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
        at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
        at android.view.View.layout(View.java:16630)
        at android.view.ViewGroup.layout(ViewGroup.java:5437)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
        at android.view.Choreographer.doCallbacks(Choreographer.java:670)
        at android.view.Choreographer.doFrame(Choreographer.java:606)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
        at android.os.Handler.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)