我有这个xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/photo0"
android:id="@+id/imagBackground">
<TextView android:layout_width="20dip" android:layout_height="20dip"
android:layout_marginLeft="250dip" android:layout_marginTop="15dip" android:background="#FFFFFF"
android:id="@+id/index" android:text="0" android:textColor="#000000">
</TextView>
<ImageView android:layout_marginTop="280dip"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@drawable/anim_ctrl_panel" android:id="@+id/change">
</ImageView>
</LinearLayout>
并且我必须通过代码绘制一些矩形。怎么做?
我试过了:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (LinearLayout) findViewById(R.id.imagBackground);
changeImage = (ImageView) findViewById(R.id.change);
index = (TextView) findViewById(R.id.index);
draw();
}
private void draw() {
System.out.println("desenam");
int width = 50;
int height = 100;
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.RED);
canvas.drawRect(25, 50, 75, 150, paint);
ImageView imageView = new ImageView(this);
imageView.setImageBitmap(bitmap);
layout.addView(imageView);
setContentView(layout);
}
但是矩形在屏幕的底部。如何设置放置它们的位置?
答案 0 :(得分:5)
我的猜测是,它位于页面底部的原因是因为LinearLayout:最终你将有3个孩子:TextView,ImageView和ImageView,都在彼此之下。
一些可能的解决方案:
在LinearLayout中添加一个FrameLayout并在其中添加ImageViews,因此层次结构将为:
使用RelativeLayout而不是LinearLayout,并将第二个ImageView的所有边缘与第一个对齐
创建一个自定义ImageView类,例如“com.foo.bar.MyImageView”,它当然扩展了ImageView。覆盖onDraw:
public void onDraw(Canvas canvas) {
super.onDraw(canvas); // This will render the original image
// ... and here you can have the code to render the rectangle
}
在xml中替换
<ImageView ...
与
<com.foo.bar.MyImageView ...
我会选择最后的解决方案,因为从性能的角度来看,它是最好的。
答案 1 :(得分:0)
试试这段代码:
Point left=new Point(x, y);
paint.setColor(Color.parseColor("#00CCFF"));
paint.setStyle(Style.FILL);
canvas.drawCircle(left.x, left.y, 9, paint);
所以你必须使用像素创建一个Point然后在它周围绘制一个矩形,否则它不知道在哪里绘制
答案 2 :(得分:0)
为什么不在布局文件中执行此操作:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/photo0"
android:id="@+id/imagBackground">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@android:color/darker_gray">
<LinearLayout android:layout_width="fill_parent"
android:layout_margin="5dip"
android:layout_height="fill_parent" android:background="@android:color/black">
<TextView android:layout_width="20dip" android:layout_height="20dip"
android:layout_marginLeft="250dip" android:layout_marginTop="15dip" android:background="#FFFFFF"
android:id="@+id/index" android:text="0" android:textColor="#000000">
</TextView>
<ImageView android:layout_marginTop="280dip"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@drawable/anim_ctrl_panel" android:id="@+id/change">
</ImageView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 3 :(得分:0)
尝试将LinearLayout
更改为:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:gravity="top" android:layout_gravity="top"
android:layout_height="fill_parent" android:background="@drawable/photo0"
android:id="@+id/imagBackground">
...