Android:相对于ImageView放置按钮

时间:2013-02-07 14:56:50

标签: android android-layout relativelayout

我想让位图的一部分可点击,我的布局如下:

________________________________
|             #####             |
|             #####             |
|      ___________________      |
|      |                 |      |
|      |                 |      |
|      |      image      |      |
|      |                 |      |
|      |                 |      |
|      ___________________      |
________________________________

我认为最简单的方法是使用相对布局在图像上放置一个按钮:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/ImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <Button
        android:id="@+id/Button"
        android:layout_width="200dip"
        android:layout_height="150dip"/>
</RelativeLayout>

但我还没弄明白如何让按钮与图像的左上角对齐(而不是像现在这样,相对布局的左上角)。这可能与相对布局有关吗?

也欢迎其他方法的建议,我考虑过这个: http://blahti.wordpress.com/2012/06/26/images-with-clickable-areas/ 但对于我的简单矩形区域来说,这似乎有些过分。

3 个答案:

答案 0 :(得分:1)

试试这个:     

    <ImageView
        android:id="@+id/ImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <Button
        android:id="@+id/Button"
        android:layout_alignLeft="@id/ImageView"
        android:layout_alignTop = "@id/ImageView"
        android:layout_width="200dip"
        android:layout_height="150dip"/>
</RelativeLayout>

答案 1 :(得分:1)

您也可以使用

<Button
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@drawable/image1" 
        android:drawableLeft="@drawable/image2t"
        android:drawableRight="@drawable/image3"
        android:drawableTop="@drawable/image4"
        android:drawableTop="@drawable/image4"
        android:textColor="#ffffff"
        />

答案 2 :(得分:0)

好吧,我的google-fu改进了,感谢asenovm我明白了! imageview有一个android:adjustViewBounds属性,默认情况下设置为false。将其设置为true会调整图像的图像视图边界,以便alignLeft和alignTop正确地为按钮工作。

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/ImageView"
        android:layout_centerInParent="true" 
        android:adjustViewBounds="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <Button
        android:id="@+id/Button"
        android:layout_alignLeft="@id/ImageView"
        android:layout_alignTop = "@id/ImageView"
        android:layout_width="200dip"
        android:layout_height="150dip"/>
</RelativeLayout>