我正在开发一个跨平台的android / ios框架的android半部分,它允许你在JS中编写可在两个平台上运行的应用程序。我这样说是因为这意味着我不能使用9-patches这样的东西来获得这种效果。 https://github.com/mschulkind/cordova-true-native-android
的完整代码以下是该问题的两个屏幕截图:
- 图像编辑,因为我太新了,不适合这个。当我不再是新手时,我将不得不添加它们.-
生成drawable的代码 // Borrowed from:
// http://www.betaful.com/2012/01/programmatic-shapes-in-android/
private class ViewBackground extends ShapeDrawable {
private final Paint mFillPaint, mStrokePaint;
private final int mBorderWidth;
public ViewBackground(
Shape s, int backgroundColor, int borderColor, int borderWidth) {
super(s);
mFillPaint = new Paint(this.getPaint());
mFillPaint.setColor(backgroundColor);
mStrokePaint = new Paint(mFillPaint);
mStrokePaint.setStyle(Paint.Style.STROKE);
mStrokePaint.setStrokeWidth(borderWidth);
mStrokePaint.setColor(borderColor);
mBorderWidth = borderWidth;
}
@Override
protected void onDraw(Shape shape, Canvas canvas, Paint paint) {
shape.resize(canvas.getClipBounds().right, canvas.getClipBounds().bottom);
Matrix matrix = new Matrix();
matrix.setRectToRect(
new RectF(
0, 0,
canvas.getClipBounds().right, canvas.getClipBounds().bottom),
new RectF(
mBorderWidth/2, mBorderWidth/2,
canvas.getClipBounds().right - mBorderWidth/2,
canvas.getClipBounds().bottom - mBorderWidth/2),
Matrix.ScaleToFit.FILL);
canvas.concat(matrix);
shape.draw(canvas, mFillPaint);
if (mBorderWidth > 0) {
shape.draw(canvas, mStrokePaint);
}
}
}
当drawable被直接设置为EditText的背景并且我将其设置为EditText周围的父视图的背景时,就会发生这种情况。
任何人都知道这里发生了什么,或者我应该探索哪些途径?
答案 0 :(得分:0)
看起来你想画一个圆角矩形。
要实现这样的样式,使用XML drawable更简单。
您只需将XML文件放入drawable /目录即可。在这里,您可以描述所需的形状。 有关XML drawables的一些文档在这里:http://idunnolol.com/android/drawables.html 看看标签。