如何使用LinearLayout和RelativeLayout实现重叠元素

时间:2017-02-03 06:45:34

标签: android android-layout android-linearlayout android-relativelayout overlapping

我正在尝试使用LinearLayout来实现具有多个图像的布局,这些图像的水平位置均匀分布在某个宽度为[A]的容器中。随着容器宽度的缩小,图像应该相互重叠

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/File">      
    <xsl:copy>
        <xsl:for-each-group select="Worker/Detail" group-by="EmployeeID">
            <Worker>
                <xsl:for-each-group select="current-group()" group-by="PayCode">
                    <Detail>              
                        <xsl:copy-of select="EmployeeID | FirstName | PayCode"/>
                        <Amount>
                            <xsl:value-of select="format-number(sum(current-group()/Amount),'#.000000')"/>
                        </Amount>
                    </Detail>  
                </xsl:for-each-group>
            </Worker>
        </xsl:for-each-group>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

上面的布局将图像均匀分布在容器宽度[A]:

Five stars evenly distributed

然而,当将[A]更改为应该使图像重叠的某个小值时,它们会按比例缩小以使它们适合其父RelativeLayout的宽度。这很奇怪,因为我明确地在[B]处询问了<LinearLayout android:orientation="horizontal" android:layout_width="128dp" <--- [A] android:layout_height="64dp" > <RelativeLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" > <ImageView android:layout_width="wrap_content" <---- [B] android:layout_height="wrap_content" android:layout_centerInParent="true" app:srcCompat="@drawable/ic_star_black_24dp" /> </RelativeLayout> <RelativeLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" app:srcCompat="@drawable/ic_star_black_24dp" /> </RelativeLayout> </LinearLayout> 的宽度。我不想让图像缩放。

They're scaled down rather than overlap.

我是如何做到这一点的?

(我希望图像重叠的原因是因为它是转换过程中预期编排的一部分。它们的最终位置将是非重叠的。)

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。我找到android:scaleType,它控制图像相对于尺寸的缩放方式。但是,在我将android:scaleType更改为app:srcCompat之前,使用android:src完全没有任何效果。我不知道为什么会这样,但以下工作正如预期的那样:

<LinearLayout
 android:orientation="horizontal"
 android:layout_width="128dp"
 android:layout_height="64dp"
 >
 <RelativeLayout
     android:layout_width="0dp"
     android:layout_height="match_parent"
     android:layout_weight="1"
     >
     <ImageView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerInParent="true"
         android:src="@drawable/ic_star_black_24dp"   <--- !!
         android:scaleType="center"                   <--- !!
         />
 </RelativeLayout>
 <RelativeLayout
     android:layout_width="0dp"
     android:layout_height="match_parent"
     android:layout_weight="1"
     >
     <ImageView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerInParent="true"
         android:src="@drawable/ic_star_black_24dp"   <--- !!
         android:scaleType="center"                   <--- !!
         />
 </RelativeLayout>
</LinearLayout>