2

我有一种情况,我想在画布中绘制一些值。这些值来自另一个活动。

 Canvas myCanvas;

public void findSubUnit(String name) {
    unitName = name;
    for (Entry<String, ArrayList<String>> values : subUnits.entrySet()) {

        key = values.getKey();
        if (unitName.equalsIgnoreCase(key)) {
            Log.i("prj,match unit=", key);

            v = values.getValue();
            myCanvas = new Canvas();
            onDraw(myCanvas);

        }
    }

这是我的onDraw方法。

  void onDraw(Canvas canvas, ArrayList<String> units) {
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        canvas.drawText("hello", 100, 130, paint);
    }

它什么也不显示,甚至没有错误。我怎样才能arraylist明确onDraw发送。

4

1 回答 1

0

您需要制作自定义视图并覆盖所有 3 个承包商,将 ArrayList 单元放在自定义类中为 ArrayList 编写 setter getter 然后调用

请求布局();

在自定义视图上

invalidate() 只是导致视图被重绘:http: //developer.android.com/reference/android/view/View.html#invalidate()

requestLayout() 要求视图通过新的度量/布局传递(然后重绘):http: //developer.android.com/reference/android/view/View.html#requestLayout()

于 2019-06-11T05:41:39.110 回答