如何在布局上绘制

时间:2011-03-10 16:11:36

标签: android

我是android新手。

任何人都可以帮我解决这个问题。

我有一个布局,其中有一个imageView。我想要的是我想在这个图像的顶部画一个矩形。矩形的高度是在运行时获得的。

我尝试使用shapeDrawable类和onDraw()方法绘制矩形。但每次我绘制我的布局都会消失,而我得到的是黑色背景中的矩形。

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:8)

您可以使用FrameLayout重叠视图。在您的布局XML中:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/my_image"/>
    <View
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/my_shape"/>
</FrameLayout>

然后在res/drawable/my_shape.xml中,您可以拥有Shape Drawable,例如:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp"/>
    <solid android:color="#00000000"/>
    <stroke android:width="3dp" android:color="#ffff0000"/>
</shape>

第二个选项是使用自定义视图而不是覆盖视图,并覆盖其onDraw方法来执行自定义Canvas绘图。在这种情况下,您仍然可以使用FrameLayout将视图放在ImageView上。

第三个选项是使用自定义视图,并使用drawBitmap方法中的onDraw调用将图像绘制到其中。这可能是三种方法中最灵活的。