Android ShapeDrawable中的偏移形状
我试图用一个扩展ShapeDrawable的类来绘制一个有边框的圆角矩形(请参见),除了ShapeDrawable似乎在切断一些边框外,其他一切都正常工作,因为形状本身没有延伸到这些边框之外Android ShapeDrawable中的偏移形状,android,drawable,shapes,Android,Drawable,Shapes,我试图用一个扩展ShapeDrawable的类来绘制一个有边框的圆角矩形(请参见),除了ShapeDrawable似乎在切断一些边框外,其他一切都正常工作,因为形状本身没有延伸到这些边框之外 是否有某种方法可以偏移shapedrawable开始绘制的位置,以便在形状本身和画布的边界之间有一些填充?我尝试了ShapeDrawable.setBounds和ShapeDrawable.setPadding,使其大于形状的固有大小,但似乎没有取得任何效果。我应该改为子类化Drawable吗?您可以使用i
是否有某种方法可以偏移shapedrawable开始绘制的位置,以便在形状本身和画布的边界之间有一些填充?我尝试了ShapeDrawable.setBounds和ShapeDrawable.setPadding,使其大于形状的固有大小,但似乎没有取得任何效果。我应该改为子类化Drawable吗?您可以使用inset(inset\u shape.xml)来包装您的形状Drawable:
然后根据需要使用插图形状。在您的可绘图…中尝试此操作
<?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>
谢谢,我在代码中创建了一个InsertDrawable:[新的InsertDrawable(shape,x,x,x,x)],并传递了它,它解决了这个问题。InsertDrawable在文档中似乎有点隐藏-非常有用,我刚刚发现,除了传递android:drawable,还可以嵌套drawable,因此不需要两个文件。我不知道为什么我会认为这是不可能的。
<?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>