2014-01-26 25 views
1

我有以下代碼:爲什麼我的視圖沒有改變?

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); 
     paint.setStrokeWidth(3); 
     canvas.drawRect(30, 30, 80, 80, paint); 
     paint.setStrokeWidth(0); 
     paint.setColor(Color.CYAN); 
     canvas.drawRect(33, 60, 77, 77, paint); 
     paint.setColor(Color.YELLOW); 
     canvas.drawRect(33, 33, 77, 60, paint); 

    } 
} 

和主類:

public class MainActivity extends Activity { 

    DrawView drawView; 
    Button btn; 
    View view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btn = (Button) findViewById(R.id.button1); 
     view = (View) findViewById(R.id.view1); 

     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       generate(); 
      } 
     }); 

    } 

    public void generate() { 
     drawView = new DrawView(this); 
     drawView.setBackgroundColor(Color.WHITE); 

     view = drawView; 
    } 
} 

問題是:當我按一下按鈕,我不能看到DrawView和我dont't知道爲什麼。

編輯:這裏是XML代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/root" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    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" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/generate" /> 

    <View 
     android:id="@+id/view1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

您需要通過XML或代碼將自定義View添加到View層次結構中。 –

+1

您必須通過addView方法將您的DrawView添加到某個ViewGroup父項 – pskink

回答

2

加入已創建的產生()方法來使用addView法活動視圖的新視圖。

+0

R.layout.activity_main已經具有View視圖;在它的xml代碼 – gurehbgui

+0

我編輯了這個問題並添加了xml – gurehbgui

+0

但是你正在創建一個 drawView = new DrawView(this); 這是一個從未被添加的新視圖。您需要添加此視圖以使其可見 –

相關問題