12

ShapeDrawableを拡張するクラス(ここを参照)を使用して、周囲に境界線のある角の丸い長方形を描画しようとしていますが、形状自体が外側に拡張されていないため、shapedrawableが境界線の一部を切り取っているように見えることを除いてすべてが機能していますそれらの境界。

シェイプ自体とキャンバスの境界の間にパディングがあるように、シェイプドローアブルが描画を開始する場所をオフセットする方法はありませんか?ShapeDrawable.setBoundsをシェイプの固有のサイズよりも大きくしてShapeDrawable.setPaddingを試しましたが、どこにも到達していないようです。代わりにDrawableをサブクラス化する必要がありますか?

4

2 に答える 2

25

インセット (inset_shape.xml) でシェイプ ドローアブルをラップできます。

    <inset xmlns:android="http://schemas.android.com/apk/res/android"
     android:drawable="@drawable/your_shape_drawable" android:insetBottom="10dip"
     android:insetLeft="10dip" android:insetRight="10dip" android:insetTop="10dip"
     android:visible="true" />

次に、必要に応じてinset_shapeを使用します。

于 2010-09-09T05:56:04.960 に答える
0

これをドローアブルで試してください...!

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

    <solid android:color="#e1e1e1" />

    <stroke
        android:width="2dp"
        android:color="#808080" />

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

    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />

</shape>
于 2013-07-04T12:58:07.753 に答える