2

私はRelativeLayoutを持っています

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

読み込み時に、RelativeLayout の行で android.view.InflateException という例外が発生します。「android:background」を削除すると、すべてが完璧に機能します。my_shape_normal の何が問題になっていますか?

4

1 に答える 1

6

XML をカット アンド ペーストすると、LogCat は次のように読み取ります。

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

そこで、この要件を反映するようにシェイプ 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要素を の 1 つの属性に結合したことに注意してくださいshape

于 2012-09-10T22:34:11.323 に答える