2012-04-11 30 views
1

我已經創建了一個應該包含不同顏色的多個視圖的欄。必須繪製一條線來指示條上的當前位置。以下是我的簡化代碼:如何在包含其他視圖的LinearLayout中繪製一條線?

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); 
    } 
} 

現在,這似乎不起作用。無論我是否將canvas.drawLinesuper.onDraw對換,該行都不可見,除非我刪除view.setBackgroundResource。我如何在LinearLayout上繪製一條線?如果可能,我寧願不使用FrameLayout。

下面是我想要實現對酒吧的頂部(加白線)圖片(注:在第一張照片的白條只是誇張的大了清晰的SO):

bar

bar 2

+0

正在發生的事情是,您在LinearLayout上畫一條線,然後將一個孩子放在上面。因此該線在孩子後面。我不完全明白你想要做什麼,因此我很難提出一個最佳解決方案。 – pgsandstrom 2012-04-11 10:32:56

回答

3

覆蓋dispatchDraw()代替的onDraw()。你想在之後畫子線觀點(這不在super.onDraw中)。

相關問題