11

ビューの背景として描画可能な xml レイヤー リストがありますが、一部のデバイスでは正しく表示されません。

私は 4.2.2 の Huawei Ascend Mate を持っていますが、問題なく表示されます。4.1.2 の Asus phonepad タブレットでは、アイテム シェイプのストロークだけが表示され、他のアイテムは表示されません。

私は何を間違っていますか?

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/yellow_color" />
        </shape>
    </item>
    <item>
        <bitmap
            android:gravity="center_horizontal|bottom"
            android:src="@drawable/dotted_bg"
            android:tileMode="repeat" />
    </item>
    <item>
        <shape>
            <stroke
                android:width="4dp"
                android:color="@color/yellow_color" />
        </shape>
    </item>
    <item>
        <bitmap
            android:gravity="center_horizontal|bottom"
            android:src="@drawable/tls_bg" />
    </item>

</layer-list>
4

3 に答える 3

46

問題を修正しました。どうやら一部のデバイス (android 4.0 および 4.1.1) では、次のコードにより、次の形状の下にあるすべてのレイヤーが黒色でオーバーペイントされました。

<item>
    <shape>
        <stroke
            android:width="4dp"
            android:color="@color/yellow_color" />
    </shape>
</item>

形状に透明な単色を追加したところ、正常に機能するようになりました。

<item>
    <shape>
        <stroke
            android:width="4dp"
            android:color="@color/yellow_color" />
        <solid android:color="@android:color/transparent" />
    </shape>
</item>

そのため、一部のデバイスでは黒く塗りつぶされるため、色のない境界線のある形状をそのままにしないでください。

于 2014-11-11T07:24:30.250 に答える
0

これはおそらく、drawable の android:src="@drawable/dotted_bg"android:src="@drawable/dotted_bg"android:src="@drawable/tls_bg"大きすぎるためです。デバイスの画面密度を見つけて、対応するリソース フォルダー (例: drawable-xhdpi) を確認し、そのフォルダー内のドローアブルを小さくします。

于 2014-11-03T09:51:45.977 に答える
0

電話は異なる API レベルを使用します: 16 & 17. 特定のターゲットに対して複数の値ディレクトリがないことを確認してください(例: values-v16 & values-v17 )。

また、表示されないアイテムには一部のドローアブルへの参照が含まれているため、各画面 dpi のすべてのドローアブルディレクトリでファイルが正しいことを確認してください。

于 2014-11-01T20:22:48.757 に答える