在使用shape作为背景的时候,代码如下:
- <?xml version=“1.0” encoding=“utf-8”?>
- <shape xmlns:android=“http://schemas.android.com/apk/res/android” >
- <corners android:topLeftRadius=“30dp” android:bottomLeftRadius=“30dp”
- android:topRightRadius=“0dp” android:bottomRightRadius=“0dp”/>
- <solid android:color=“#ff0000”/>
- </shape>
在android3.0以上显示正常如下:
但是在android3.0以下,比如android2.3.3结果如下:
这显然不符合我们的要去,我想了很多办法都没能解决,只有通过图片背景来实现,但我在stackoverflow看到一方案计较好,记录一下:
代码如下:
- <?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=“#FF0000” />
- <corners android:radius=“30dp”/>
- </shape>
- </item>
- <item android:left=“30dp”
- >
- <shape
- android:shape=“rectangle”>
- <solid android:color=“#FF0000” />
- </shape>
- </item>
- </layer-list>
现在效果都一样了,android2.3.3效果如下:
通过两个层,变相的解决了这个问题,希望对大家有帮助!!!!
最后附上stackoverflow的地址:http://stackoverflow.com/questions/8399517/why-i-am-not-able-to-create-the-round-border-for-specific-corner
标签:
it |
【功能说明】该方法用于在画布上绘制圆角矩形,通过指定RectF对象以及圆角半径来实现。该方法是绘制圆角矩形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆角矩形。
【基本语法】public void drawRoundRect (RectF rect, float rx, float ry, Paint paint)
参数说明
rect:RectF对象。
rx:x方向上的圆角半径。
ry:y方向上的圆角半径。
paint:绘制时所使用的画笔。
【实例演示】下面通过代码来演示如何在画布上绘制圆角矩形。
- protected
void onDraw(Canvas canvas) { -
// TODO Auto-generated method stub -
super.onDraw(canvas); -
paint.setAntiAlias(true); //设置画笔为无锯齿 -
paint.setColor(Color.BLACK); //设置画笔颜色 -
canvas.drawColor(Color.WHITE); //白色背景 -
paint.setStrokeWidth((float) 3.0); //线宽 -
paint.setStyle(Style.STROKE); //空心效果 -
Rect r1=new Rect(); //Rect对象 -
r1.left=50; //左边 -
r1.top=50; //上边 -
r1.right=450; //右边 -
r1.bottom=250; //下边 -
canvas.drawRect(r1, paint); //绘制矩形 -
RectF r2=new RectF(); //RectF对象 -
r2.left=50; //左边 -
r2.top=400; //上边 -
r2.right=450; //右边 -
r2.bottom=600; //下边 -
canvas.drawRoundRect(r2, 10, 10, paint); //绘制圆角矩形 - }
在 这段代码中,首先设置了Paint画笔的颜色,并设置Canvas画布为白色背景。接着设置画笔的线宽以及空心效果,这样将绘制出空心矩形。最后,调用 drawRect方法在画布上绘制了一个矩形,调用drawRoundRect方法在画布上绘制了一个圆角矩形。读者运行这段代码,可以在手机屏幕上看到 如图8.18所示的显示效果。
![]() |
图8.17 |
![]() |
图8.18 |