1

長方形を表示し、ボタンで色を変更できるシンプルなアプリを作成しようとしています。

長方形クラスは次のとおりです。

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

私のアプリはタブレイアウトアプリです。このクラスは、次のように 3 番目のタブに表示されます。

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

私は何を間違っていますか?誰かがこのコードを修正したり、長方形を描画してボタンで色を変更できる簡単なアプリをセットアップする適切な例を教えてくれませんか?

返信ありがとうございます。

4

1 に答える 1

0

これを使用してみてください:

paint.setStyle(Paint.Style.FILL);
于 2012-05-03T15:42:06.650 に答える