我是Android编程的新手,我有一些关于绘图的基本问题。
我有一个通过.xml文件显示textview的活动,如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:textSize="18dp"
android:textStyle="bold" />
</RelativeLayout>
我想在Activity中显示几个矩形。为此,我创建了一个扩展View的新类。我实例化了这个类并设法在我的Activity中显示我的矩形(也许我应该在这里使用单词布局,我不确定......)。
我创建的课程:
public class DrawRectangle extends View {
Paint paint = new Paint();
int x,y;
int length,width;
public DrawRectangle(Context context,int _x,int _y, int _length, int _width){
super(context);
x = _x;
y = _y;
length = _length;
width = _width;
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(x, y, x+length, y+length, paint);
}
}
创建DrawRectangle类实例的活动内部的函数:
public void drawRectangle(){
DrawRectangle rectangle = new DrawRectangle(this,100,100,50,50);
// rectangle.setBackgroundColor(Color.TRANSPARENT);
setContentView(rectangle);
}
这就是发生的事情:
我尝试创建另一个DrawRectangle类的实例,只能看到一个(最后一个要在屏幕上设置)。我认为问题来自这样一个事实:视图占据了所有位置,并被置于一切之前。所以我尝试使用以下行将背景颜色更改为透明:
rectangle.setBackgroundColor(Color.TRANSPARENT);
或
rectangle.setBackgroundColor(Color.parseColor("#00000000");
没有任何错误,但无法看到其他矩形或文本视图。
我该怎么办?我怀疑对这一切有一种误解。
谢谢你们!
答案 0 :(得分:1)
在setContentView
中,您必须传递活动的xml布局(包含TextView)。
稍后您可以将其他视图添加到此布局。例如:
ViewGroup layout = (ViewGroup) findViewById(R.id.your_layout_id);
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setText("Added tv");
layout.addView(tv);