2012-04-06 71 views
0

我對這整個圖形/畫布的東西相當新。我想要做的就是在一些按鈕下面顯示一條線上的畫布。我做錯了什麼?這裏是我的代碼:爲什麼我的畫布不顯示(Android)?

public class Vectors extends Activity{ 

    VectorsView vectorsView; 
    LinearLayout l; 
    Canvas canvas; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vectors); 
     vectorsView = new VectorsView(this); 

    } 

    public class VectorsView extends View{ 

     public VectorsView(Context context) { 
      super(context); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 
      // TODO Auto-generated method stub 
      super.onDraw(canvas); 
      l = (LinearLayout) findViewById(R.layout.vectors); 


      Paint paint = new Paint(); 
      canvas = new Canvas(); 

      paint.setColor(Color.WHITE); 
      canvas.drawLine(0, 0, 100, 100, paint); 
      vectorsView.draw(canvas); 

      l.addView(vectorsView); 
      setContentView(l); 
     } 
    } 
} 

,這裏是請求vectors.xml:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/background" 
     android:orientation="vertical"> 

     <ImageView android:layout_height="wrap_content" 
      android:src="@drawable/vectors" 
      android:layout_width="wrap_content" 
      android:layout_gravity="center" 
      android:paddingTop="5dp" 
      android:paddingBottom="5dp" 
      android:adjustViewBounds="true"> 
     </ImageView> 
     <LinearLayout android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:orientation="horizontal"> 
      <Button android:text="Choose Program" 
       android:id="@+id/bChsProgV" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="5dp" 
       android:layout_marginLeft="97dp" 
       android:adjustViewBounds="true"> 
      </Button> 
      <ImageButton android:layout_height="wrap_content" 
       android:src="@drawable/help" 
       android:id="@+id/ibHelpV" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="65dp" 
       android:background="@null" 
       android:layout_marginTop="10dp"> 
      </ImageButton> 
     </LinearLayout> 
     <LinearLayout android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
      <TextView android:text="Value" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingLeft="5dp" 
       android:paddingRight="5dp" 
       android:textColor="#fffafa"> 
      </TextView> 
      <EditText android:text="" 
       android:id="@+id/etValueV" 
       android:layout_height="wrap_content" 
       android:inputType="numberSigned|numberDecimal" 
       android:layout_width="100dp" > 
      </EditText> 
      <Button android:text="Next" 
       android:id="@+id/bNextV" 
       android:layout_width="65dp" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp"> 
      </Button> 
      <TextView android:text="" 
       android:id="@+id/tvAnsValV" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 
      </TextView> 
     </LinearLayout> 
     <LinearLayout android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
      <TextView android:text="Angle" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingLeft="5dp" 
       android:paddingRight="5dp" 
       android:textColor="#fffafa"> 
      </TextView> 
      <EditText android:text="" 
       android:id="@+id/etAngleV" 
       android:layout_height="wrap_content" 
       android:inputType="numberSigned|numberDecimal" 
       android:layout_width="100dp" > 
      </EditText> 
      <Button android:text="Prev" 
       android:id="@+id/bPrevV" 
       android:layout_width="65dp" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp"> 
      </Button> 
      <TextView android:text="" 
       android:id="@+id/tvAnsAng" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 
      </TextView> 
     </LinearLayout> 
     <LinearLayout android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:orientation="horizontal"> 
      <LinearLayout android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:orientation="vertical"> 
       <RadioGroup 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" >    
        <RadioButton android:layout_height="wrap_content" 
         android:layout_width="wrap_content" 
         android:checked="true" 
         android:text="Degrees" 
         android:layout_marginLeft="5dp" 
         android:id="@+id/rbDegV"> 
        </RadioButton> 
        <RadioButton android:layout_height="wrap_content" 
         android:layout_width="wrap_content" 
         android:checked="false" 
         android:text="Radians" 
         android:layout_marginLeft="5dp" 
         android:id="@+id/rbRadV"> 
        </RadioButton> 
       </RadioGroup> 
      </LinearLayout> 
      <RadioGroup 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 
       <LinearLayout android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:orientation="horizontal"> 
        <LinearLayout android:layout_height="wrap_content" 
         android:layout_width="wrap_content" 
         android:orientation="vertical"> 
         <RadioButton android:layout_height="wrap_content" 
          android:layout_width="wrap_content" 
          android:checked="false" 
          android:text="Q2" 
          android:layout_marginLeft="90dp" 
          android:id="@+id/rbQ2V"> 
         </RadioButton> 
         <RadioButton android:layout_height="wrap_content" 
           android:layout_width="wrap_content" 
           android:checked="false" 
           android:text="Q3" 
           android:layout_marginLeft="90dp" 
           android:id="@+id/rbQ3V"> 
         </RadioButton> 
        </LinearLayout> 
        <LinearLayout android:layout_height="wrap_content" 
         android:layout_width="wrap_content" 
         android:orientation="vertical"> 
         <RadioButton android:layout_height="wrap_content" 
          android:layout_width="wrap_content" 
          android:checked="true" 
          android:text="Q1" 
          android:layout_marginLeft="5dp" 
          android:id="@+id/rbQ1V"> 
         </RadioButton> 
         <RadioButton android:layout_height="wrap_content" 
           android:layout_width="wrap_content" 
           android:checked="false" 
           android:text="Q4" 
           android:layout_marginLeft="5dp" 
           android:id="@+id/rbQ4V"> 
         </RadioButton> 
        </LinearLayout> 
       </LinearLayout> 
      </RadioGroup>              
     </LinearLayout> 
     <Button android:text="Submit" 
      android:id="@+id/bSubmitV" 
      android:layout_width="75dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center"> 
     </Button> 
     <TextView android:text="" 
      android:id="@+id/tvErrorV" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:textColor="#fffafa"> 
     </TextView> 
     <LinearLayout android:id="@+id/llCanvasV" 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"> 
     </LinearLayout> 
    </LinearLayout> 

</ScrollView> 
+0

你能證明你的vectors.xml? – ligi 2012-04-06 23:03:37

回答

0

無論您使用VectorsView在vectors.xml - 但是你將需要添加帶屬性的構造

你在vectors.xml添加一個容器(如LinearLayout中)和你的vectorsView通過代碼添加到它 - 那麼你必須構造足夠

0

您的視圖層次結構由您的XML定義。

您的setContentView()調用使您的頂級XML元素ScrollView成爲視圖層次結構的根視圖。

您在代碼中創建的VectorsView對象不附加到該視圖層次結構。由於它不在該層次結構中,因此它永遠不會顯示。它的onDraw()代碼永遠不會被調用。

在onDraw()例程中調用addView()和setContentView()是不合適的。一般的順序是在onCreate()調用的代碼中定義視圖層次結構,然後允許OS在整個層次結構中調用onDraw()方法。

如果您刪除了onDraw()中與繪圖相關的所有命令,則可以通過setContentView(vectorsView)替換setContentView(R.layout.vectors)調用來看到它。當然,你的XML定義的小部件都不會被看到。

本頁面提供一些額外的信息:

http://developer.android.com/guide/topics/ui/index.html