0

ボタン、画像、および線を使用したインタラクティブなフローチャートであるカスタム ビューを動的に作成しています。各要素の子ビューを作成し、それらをマスター ビュー グループに追加します。すなわち:

// lines
LineDrawView lineView = new LineDrawView(getActivity(),lineArray);
lineView.setClickable(false);
layout.addView(lineView);

次に私のボタン:

Button button = new Button(getActivity());
button.setText(title);
layout.addView(button, new AbsoluteLayout.LayoutParams(width, height, x, y));

レイアウト パラメータはすべて事前定義されており、各フローチャートを定義するデータベースに保存されています。ラインを除いて、必要な効果が得られています。場合によっては、1 本の線だけを描いており、ボタンを線の上に配置したいと考えています。代わりに、私のラインは常に最前線にあります。すなわち:

フローチャート ボタン

私の質問は、ラインビューをバックグラウンドにするにはどうすればよいですか? これが私のラインビューコードです:

public class LineDrawView extends View {

private int KMULTIPLIER = 2;
private ArrayList<String []> lineArray;

public LineDrawView(Context context, ArrayList<String []> lineArray) {
    super(context);
    this.lineArray = lineArray;
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);;
    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);

    // determine the screen size & initialize CONSTANT
    int screenSize = getResources().getConfiguration().screenLayout &
            Configuration.SCREENLAYOUT_SIZE_MASK;

    switch(screenSize) {
        case Configuration.SCREENLAYOUT_SIZE_LARGE:
            KMULTIPLIER = 4;
            break;
        case Configuration.SCREENLAYOUT_SIZE_NORMAL:
            KMULTIPLIER = 3;
            break;
        case Configuration.SCREENLAYOUT_SIZE_SMALL:
            KMULTIPLIER = 2;
            break;
        default:
    }

    // draw the lines
    if (lineArray.size() > 0) {
        for (int i=0;i < lineArray.size();i++) {
            String[] array = lineArray.get(i);
            int x = Integer.parseInt(array[0].trim())*KMULTIPLIER;
            int y = Integer.parseInt(array[1].trim())*KMULTIPLIER;
            int x2 = Integer.parseInt(array[2].trim())*KMULTIPLIER;
            int y2 = Integer.parseInt(array[3].trim())*KMULTIPLIER;

            canvas.drawLine(x, y, x2, y2, paint);
        }
    }   
}

}

どんな提案でも大歓迎です。ありがとうございます。

4

1 に答える 1