Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在包含其他视图的线性布局中绘制直线?_Android_Android Layout - Fatal编程技术网

Android 如何在包含其他视图的线性布局中绘制直线?

Android 如何在包含其他视图的线性布局中绘制直线?,android,android-layout,Android,Android Layout,我创建了一个应该包含不同颜色的多个视图的栏。必须绘制一条线,指示条形图中的当前位置。下面是我的简化代码: public class Abar extends LinearLayout { final Paint line_paint = new Paint(); private Context context; public Abar(Context context) { super(context); this.context = co

我创建了一个应该包含不同颜色的多个视图的栏。必须绘制一条线,指示条形图中的当前位置。下面是我的简化代码:

public class Abar extends LinearLayout {
    final Paint line_paint = new Paint();
    private Context context;

    public Abar(Context context) {
        super(context);
        this.context = context;
        line_paint.setColor(Color.WHITE);
        setWeightSum(2000);
        setBackgroundResource(R.color.blue);

        View view = new View(context);
        view.setBackgroundResource(R.color.yellow);
        this.addView(view, new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1000));
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawLine(20, 80, 100, 80, line_paint);
    }
}
现在,这似乎不起作用。无论我用
super.onDraw
交换
canvas.drawLine
,除非我删除
视图.setBackgroundResource
,否则该行都不可见。如何在线性布局上画一条线。如果可能的话,我宁愿不使用FrameLayout

下面是我试图实现的目标的图片(添加一条白线)在条的顶部(注意:第一张图片上的白色条只是为了清晰起见被放大了):


覆盖dispatchDraw()而不是onDraw()。您希望在子视图绘制之后绘制线(super.onDraw中没有此项)。

现在的情况是,您在LinearLayout上绘制一条线,然后将一个子视图放置在其上。因此,线在孩子的后面。我不完全理解你想做什么,因此我很难提出一个最好的解决方案。