0

私はこのグラフィックス/キャンバス全体にかなり慣れていません。私がやろうとしているのは、いくつかのボタンの下に線のあるキャンバスを表示することだけです。私は何を間違えましたか?これが私のコードです:

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

要求された vector.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>
4

2 に答える 2

0

vector.xmlでVectorsViewを使用しますが、属性を持つコンストラクターを追加する必要があります

また

あなたはvectors.xmlにコンテナ(例えばLinearLayout)を追加し、コードを介してそれにvectorsViewを追加します-そしてあなたが持っているコンストラクタは十分です

于 2012-04-06T23:06:26.887 に答える
0

ビュー階層は XML によって定義されます。

setContentView() 呼び出しにより、最上位の XML 要素である ScrollView がビュー階層のルート ビューになります。

コードで作成した VectorView オブジェクトは、そのビュー階層に関連付けられていません。その階層にないため、表示されることはありません。その onDraw() コードが呼び出されることはありません。

onDraw() ルーチン内での addView() および setContentView() の呼び出しは不適切です。一般的な順序は、onCreate() から呼び出されるコードでビュー階層を定義し、OS がその階層全体で onDraw() メソッドを呼び出せるようにすることです。

onDraw() から描画関連のコマンド以外をすべて削除した場合は、setContentView(R.layout.vectors) 呼び出しを setContentView(vectorsView) に置き換えることで確認できます。もちろん、XML 定義のウィジェットは表示されません。

このページには、いくつかの追加情報が記載されています。

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

于 2012-05-31T17:33:46.323 に答える