2013-04-07 98 views
1

我想要做的是將自定義視圖添加到相對佈局。而相對佈局是另一個線性佈局的子項。一切工作正常,除了自定義視圖不顯示它應該在哪裏。自定義視圖不會添加到預定義的XML佈局

自定義視圖代碼:

public class DrawView extends View { 

private Path path = new Path(); 
private Paint paint = new Paint(); 

public DrawView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    paint.setAntiAlias(true); 
    paint.setStrokeWidth(2.2f); 
    paint.setColor(Color.WHITE); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeJoin(Paint.Join.ROUND); 


} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    canvas.drawPath(path, paint); 

} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float eX = event.getX(); 
    float eY = event.getY(); 

    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     path.moveTo(eX, eY); 
     return true; 
    case MotionEvent.ACTION_MOVE: 
     path.lineTo(eX, eY); 
     return true; 
    case MotionEvent.ACTION_UP: 
     break; 
    default: 
     return false; 
    } 
    invalidate(); 
    return true; 
} 

}

XML佈局(線性和相對):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#F24738" 
android:orientation="vertical" > 
<RelativeLayout 
    android:id="@+id/draw_container" 
    android:layout_width="match_parent" 
    android:layout_height="450dp" 
    android:background="#FFFFFF"> 
</RelativeLayout> 

這就是今天的主要活動:

public class DrawActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_draw); 

    final RelativeLayout parentLayout = (RelativeLayout) findViewById(R.id.draw_container); 
    parentLayout.addView(new DrawView(this, null)); 
} 

}

當我嘗試:

setContentView(new DrawView(this, null)); 

,一切工作正常。我感到震驚。我知道,我錯過了很簡單的事情。

回答

2

您的代碼正在工作,但您正在白色背景上繪製白色筆畫。

嘗試改變這種line.-

paint.setColor(Color.WHITE);

paint.setColor(Color.RED);

+1

天啊!我太天真地注意到這一點。謝謝。 – Umayr 2013-04-07 19:14:13