2013-09-22 4 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> 

У меня 2 сомнений.

1) Я хочу прямоугольник в верхней части приложения и кнопку внизу. Как я должен это делать?

2) Позже я хочу изменить цвет прямоугольника. Как мне получить прямоугольник для изменения атрибутов?

+0

'android: layout_alignParentTop« true »для прямоугольника и http://developer.android.com/training/custom-views/create-view.html для атрибута цвета. – 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 прямоугольников, например, сетку. Я нарисую все в цикле 2 для функции рисования. Как мне получить доступ к каждому прямоугольнику? – Sara

+1

Итак, у вас будет 1 вид, который будет рисовать все прямоугольники? Затем вы можете сохранить массив цветов (или массив массивов), чтобы сохранить цвет каждого прямоугольника с учетом его позиции строки/столбца и иметь метод 'changeColor (цветной цвет, int row, int col);' – ssantos

Смежные вопросы