Android相对布局背景崩溃

kuhbmx9i  于 2023-04-18  发布在  Android
关注(0)|答案(2)|浏览(141)

我有一个相对的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:background="@drawable/my_shape_normal"
    android:onClick="startTestTillError">

my_shape_normal定义为

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:startColor="#FFFFFF00"
    android:endColor="#80FFFFFF"
    android:angle="120"/>
<padding android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>

加载时会引发异常:android.view.InflateException出现在RelativeLayout的行中。如果我删除“android:background”,一切都很完美。my_shape_normal有什么问题?

yzuktlbb

yzuktlbb1#

当我剪切并粘贴您的XML时,我的LogCat读取:

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #6
    <gradient> tag requires 'angle' attribute to be a multiple of 45

因此,我更新了您的shape XML以反映此需求:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:padding="7dp" >

    <gradient
        android:angle="135"
        android:endColor="#80FFFFFF"
        android:startColor="#FFFFFF00" />

    <corners android:radius="8dp" />

</shape>

请注意,我还将相同的padding元素合并到shape中的一个属性中。

67up9zun

67up9zun2#

你必须使用45的Angular 倍数,例如:

45, 90, 135, 180, 225, 270, 315, 360

相关问题