使用自定义背景drawable时损坏的EditText背景

时间:2012-04-19 15:58:20

标签: java android

我正在开发一个跨平台的android / ios框架的android半部分,它允许你在JS中编写可在两个平台上运行的应用程序。我这样说是因为这意味着我不能使用9-patches这样的东西来获得这种效果。 https://github.com/mschulkind/cordova-true-native-android

的完整代码

以下是该问题的两个屏幕截图:

- 图像编辑,因为我太新了,不适合这个。当我不再是新手时,我将不得不添加它们.-

以下是从https://github.com/mschulkind/cordova-true-native-android/blob/master/src/org/apache/cordova/plugins/truenative/ViewPlugin.java#L146

生成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周围的父视图的背景时,就会发生这种情况。

任何人都知道这里发生了什么,或者我应该探索哪些途径?

1 个答案:

答案 0 :(得分:0)

看起来你想画一个圆角矩形。

要实现这样的样式,使用XML drawable更简单。

您只需将XML文件放入drawable /目录即可。在这里,您可以描述所需的形状。 有关XML drawables的一些文档在这里:http://idunnolol.com/android/drawables.html 看看标签。