如何在LayerDrawable中移动ChildDrawable

时间:2016-06-29 14:46:35

标签: android user-interface

这是我的代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_layer_drawable2);
    ImageView i = (ImageView) findViewById(R.id.i);
    LayerDrawable ld = new LayerDrawable(new Drawable[]{dra(this, R.drawable.ic_insert_drive_file_black_48dp), new Rect()});
    ld.setLayerInsetTop(1, 200);
    ld.setLayerInsetLeft(1, 200);
    i.setImageDrawable(ld);
}

这里是Rect

class Rect extends Drawable {
        Context c;

        @Override
        public void draw(Canvas canvas) {
            c = getApplicationContext();
            Paint p = new Paint();
            p.setStrokeWidth(2);
            p.setStyle(Paint.Style.STROKE);
            p.setColor(col(c, R.color.colorAccent));
            canvas.drawRect(100, 100, 200, 200, p);
        }

        @Override
        public void setAlpha(int alpha) {

        }

        @Override
        public void setColorFilter(ColorFilter colorFilter) {

        }

        @Override
        public int getOpacity() {
            return 0;
        }
    }

输出是:

enter image description here

我希望将矩形移到ImageView的右下角,怎么做?

当我使用setLayerInsetTop时,它只会更改矩形的大小

1 个答案:

答案 0 :(得分:0)

我找到原因,在Rect类canvas.drawRect(0, 0, 100, 100, p)中,它将强制rect指向指针(0,0),我可以将“0,0”改为其他