我对这整个图形/画布的东西都很新。我要做的就是在一些按钮下面显示一条带有一条线的画布。我做错了什么?这是我的代码:
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 :(得分:0)
要么在vectors.xml中使用VectorsView,那么你需要添加一个带属性的构造函数
或
你在vectors.xml中添加了一个容器(例如LinearLayout),并通过代码将vectorsView添加到它 - 那么你的构造函数就足够了
答案 1 :(得分:0)
您的视图层次结构由XML定义。
您的setContentView()调用使作为顶级XML元素的ScrollView成为视图层次结构的根视图。
您在代码中创建的VectorsView对象未附加到该视图层次结构。由于它不在该层次结构中,因此永远不会显示。它的onDraw()代码永远不会被调用。
在onDraw()例程中调用addView()和setContentView()是不合适的。一般顺序是在从onCreate()调用的代码中定义视图层次结构,然后允许操作系统在整个层次结构中调用onDraw()方法。
如果从onDraw()中删除了除绘图相关命令之外的所有内容,则可以通过使用setContentView(vectorsView)替换setContentView(R.layout.vectors)调用来查看它。当然,您的XML定义的小部件都不可见。
此页面提供了一些其他信息: