堆叠图像视图重叠

时间:2012-03-23 14:08:11

标签: android android-layout

我正在尝试将图像视图堆叠在一起(70%重叠)。我使用了一个frameLayout并给每个elemnet填充为10.它工作但是这个填充在处理事件时杀了我。有没有更好的重叠视图方式(使用不同的layout..etc)?我正在为Android 2.3开发

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

    <FrameLayout     
    android:id="@+id/frameLayoutBottom"      
    android:layout_width="wrap_content"      
    android:layout_height="wrap_content"     
    android:layout_alignParentBottom="true"      
    android:layout_centerHorizontal="true" > 
    <ImageView          
    android:id="@+id/ivBottom1"          
    android:layout_width="wrap_content"          
    android:layout_height="wrap_content"          
    android:src="@drawable/c10" />      
    <ImageView      
    android:id="@+id/ivBottom2"          
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"                        
    android:paddingLeft="10dp"          
    android:src="@drawable/c11" /> 

顺便说一句,当我尝试边距而不是填充时,图像仍然是100%的顶部

2 个答案:

答案 0 :(得分:2)

我有这个布局:

Hand of cards

我通过重写FrameLayout创建手形容器和ImageView来创建卡片。然后我可以用任何我想要的方式来决定它们的布局。

答案 1 :(得分:1)

创建一个自定义ViewGroup,在onLayout中列出它的子项。如果您搜索“自定义ViewGroup onLayout”,则有很多示例。通常,onLayout方法覆盖如下所示:

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {}

在该方法中,您将需要使用getChildCount()和getChildAt(index)来获取对子视图的引用。获得它们后,可以使用l,t,r和b值来比较ViewGroup的边界,并确定子项的布局位置。

找到子项并计算出它们的位置后,您将使用child.layout(l,t,r,b)将子视图放在新的自定义ViewGroup中。

希望这会有所帮助。如果你真的需要将其破解为XML,你可以尝试以下方法:

<RelativeLayout    
android:layout_width="fill_parent"      
android:layout_height="fill_parent"> 
<ImageView 
android:id="@+id/spacer1"         
android:layout_width="10dp"          
android:layout_height="wrap_content" />         
<ImageView       
android:layout_width="wrap_content"
android:layout_height="wrap_content"         
android:src="@drawable/whatever1" /> 
<ImageView       
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:layout_toRightOf="id/spacer1"        
android:src="@drawable/whatever2" /> 
</RelativeLayout>