2009-06-07 71 views
70

Android中可能存在重叠视图吗?我想在前面有一个透明png的ImageView,后面是另一个视图。Android中的重叠视图

编辑:

这是我目前所面对的是什么,问题是,在ImageView的图像不是透明的,这应该是透明的部分只是黑色的。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/gallerylayout" 
> 
<Gallery android:id="@+id/overview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 

<ImageView android:id="@+id/navigmaske" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:src="@drawable/navigmask" 
    /> 

</RelativeLayout> 

编辑:

我得到它的工作,它是从对球队的另一个程序员主题文件。 就改变了这种

<item name="android:background">#FF000000</item> 

这个

<item name="android:background">#00000000</item> 
+0

你有什么应该工作 - 你肯定图库有可见的内容,navigmaske drawable是一个透明的PNG? – 2009-06-07 17:09:06

+0

是的,画廊是可见的没有覆盖,我敢肯定,PNG是透明的 – 2009-06-07 20:45:54

回答

68

Android在本地处理视图和绘图(包括PNG图像)的透明度,因此您描述的场景(在Gallery前部分透明的ImageView)肯定是可能的。

如果您有问题,它可能与布局或图像有关。我复制了你描述的布局,并成功实现了你之后的效果。这是我使用的确切布局。

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gallerylayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Gallery 
    android:id="@+id/overview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
    <ImageView 
    android:id="@+id/navigmaske" 
    android:background="#0000"  
    android:src="@drawable/navigmask" 
    android:scaleType="fitXY" 
    android:layout_alignTop="@id/overview" 
    android:layout_alignBottom="@id/overview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
</RelativeLayout> 

请注意,我已经改变了父RelativeLayout到的高度和宽度fill_parent作为一般是你想要的一个主要活动。然后,我已将ImageView的顶部和底部对齐到Gallery的顶部和底部,以确保它位于其前面。

我也明确地设置了ImageView的背景是透明的。

至于图像可绘制本身,如果你把PNG文件放在某处让我看,我可以在我的项目中使用它,看看它是否是负责任的。

+0

不错!我试图设置一个ImageView背景#0000(和@android:color/transparent)...无济于事。如果我尝试淡化它(alpha从1.0降低到0.0),它会淡入黑色,而不是淡入透明。这是在Android 2.0上。 – 2009-12-15 03:19:56

-2

是的,这是可能的。然而,挑战是正确地进行布局。最简单的方法是使用AbsoluteLayout,然后将这两个图像放在您想要的位置。除了将它稍后添加到布局之外,您不需要为透明png做任何特殊的操作。

+15

AbsoluteLayout现在是折旧。没有人应该再使用它了。 – num1 2012-01-15 21:53:03

1

可见画廊改变了可见性,这是​​你如何让画廊超过其他视图重叠。 Home示例应用程序有这个技术的一些很好的例子。

9

此外,看看FrameLayout,这是相机的图库应用程序如何实现缩放按钮覆盖。

+1

我一直都在为`FrameLayout`去寻找完美的目的。然而,我现在才发现,在API 11之前,`FrameLayout`无法将最大测量高度传播给它的所有孩子,[见这里](http://stackoverflow.com/q/15780884/1856738)。因此,为了支持Android 2,除非有预定的高度,否则必须使用`RelativeLayout`。 – 2013-04-04 06:16:27

0

的方式角落找寻simples是把-40dp缘上方的ImageView的BUTTOM