通过按钮更改矩形颜色

时间:2012-05-03 14:53:38

标签: android

我正在尝试创建一个显示矩形的简单应用,并且能够通过按钮更改其颜色。

Rectangle类是:

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


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

@Override
public void onDraw(Canvas canvas) {

    paint.setColor(Color.YELLOW);
    canvas.drawRect(300, 550, 150, 400, paint );

}

public void setColorRed()
{
   paint.setColor(Color.RED);
   invalidate();
}

我的应用是标签布局应用。这个类以这种方式显示在第三个标签中:

main.xml

<TabHost
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >

            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"  >

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

    <Button
    android:id="@+id/bRedColor"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Red" />


   <com.thms.systemy3.DrawView
        android:id="@+id/yourID"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </com.thms.systemy3.DrawView>
                </FrameLayout>


            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

我试图通过

从我的MainClass.java类访问setColorRed()
DrawView drawview;

然后使用

drawview.setColorRed()

MainClass.java:

public class MainClass extends Activity implements OnClickListener{

TabHost th;
DrawView drawview;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    th = (TabHost) findViewById(R.id.tabhost);



    //tab3
    Button bColorRed = (Button) findViewById(R.id.bRedColor);

    th.setup();

    TabSpec specs = th.newTabSpec("tag1");
    specs.setContent(R.id.tab1);
    specs.setIndicator("TAB1");
    th.addTab(specs);

    specs = th.newTabSpec("tag2");
    specs.setContent(R.id.tab2);
    specs.setIndicator("TAB2");
    th.addTab(specs);

    specs = th.newTabSpec("tag3");
    specs.setContent(R.id.tab3);
    specs.setIndicator("TAB3");
    th.addTab(specs);


}



@Override
public void onClick(View v) {
    switch (v.getId()){
    case R.id.bRedColor:
        drawview.setColorRed();
        break;
    }

我做错了什么?任何人都可以更正此代码或给我一个正确的例子来设置绘制矩形的简单应用程序,并能够通过按钮更改颜色吗?

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

尝试使用:

paint.setStyle(Paint.Style.FILL);