ShapeDrawable中的偏移形状

Ste*_*v_k 10 android shapes drawable

我正在尝试使用一个扩展ShapeDrawable的类(参见此处)绘制一个带有边框的圆角矩形,并且一切正常,除了shaperawable似乎切掉了一些边框,因为形状本身并没有延伸到外面那些界限.

是否有一些方法可以抵消shaperawable开始绘制的位置,以便在形状本身和画布的边界之间有一些填充?我已经尝试将ShapeDrawable.setBounds大于形状和ShapeDrawable.setPadding的内在大小,但似乎没有得到任何地方.我应该继承Drawable的子类吗?

Kon*_*rov 22

你可以用inset(inset_shape.xml)包装你的shape drawable:

    <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" />
Run Code Online (Sandbox Code Playgroud)

然后根据需要使用inset_shape.

  • 谢谢,我在代码中创建了一个InsetDrawable:[new InsetDrawable(shape,x,x,x,x)]并传递了它而不是解决了它.InsetDrawable似乎有点隐藏在文档中 - 非常有帮助 (2认同)
  • 我刚刚发现,而不是传递android:drawable,你也可以嵌套drawable,所以你不需要两个文件.不知道为什么我心里想到这是不可能的. (2认同)