2014-01-26 29 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); 这是一个从未被添加的新视图。您需要添加此视图以使其可见 –

相关问题