2013-09-22 154 views
1

我是Android新手。在這裏畫一個矩形。添加按鈕Android:添加按鈕和矩形佈局

public class DrawView extends View 
{ 
    Paint paint = new Paint(); 

    public DrawView(Context context) 
    { 
      super(context);    
    } 

    @Override 
    public void onDraw(Canvas canvas)  
    { 
      paint.setColor(Color.BLACK); 
      canvas.drawRect(30f, 30f, 80f, 80f, paint); 
    } 
} 

我的XML代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/button1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="90dp" 
    android:layout_toRightOf="@+id/textView1" 
    android:text="Button" /> 

</RelativeLayout> 

我有兩個疑問。

1)我想要在應用程序頂部的矩形和底部的按鈕。我應該怎麼做?

2)後來我想改變矩形的顏色。我應該如何獲得矩形來更改屬性?

+0

'android:layout_alignParentTop「true」'爲矩形,而http://developer.android.com/training/custom-views/create-view.html爲color屬性。 – Simon

回答

1

1)矩形添加到您的佈局xml.-

<packageRouteToYourExtendedView.DrawView 
    android:id="@+id/rectangle" 
    android:layout_width="30dp" 
    android:layout_height="80dp" 
    android:layout_alignParentTop="true" /> 

2)添加一個方法到你的擴展視圖改變color.-

public class DrawView extends View 
{ 
    Color color = Color.BLACK; 
    Paint paint = new Paint(); 

    public DrawView(Context context) 
    { 
      super(context);    
    } 

    @Override 
    public void onDraw(Canvas canvas)  
    { 
      paint.setColor(color); 
      canvas.drawRect(30f, 30f, 80f, 80f, paint); 
    } 

    public changeColor(Color color) { 
     this.color = color; 
     invalidate(); 
    } 
} 

並獲得矩形視圖來調用您的新方法.-

DrawView rectangle = findViewById(R.id.rectangle); 
rectangle.changeColor(Color.BLUE); 
+0

謝謝ssantos。但是如果我想要有像網格一樣的100個矩形。我將在draw函數中繪製所有的2 for循環。現在我該如何訪問每個矩形? – Sara

+1

因此,您將擁有1個可以繪製所有矩形的視圖?然後你可以保存一個顏色數組(或數組數組),以保持每個矩形的行/列位置的顏色,並且有一個方法'changeColor(Color color,int row,int col);' – ssantos