在水平LinearLayout中重叠视图

时间:2014-07-05 23:19:46

标签: android android-layout

我需要设计一个水平方向有五个ImageViews的布局。

我可以通过基本的LinearLayout来实现我的想法,但我想要一个如下图所示的设计模式:

enter image description here

注意:所有ImageViews都采用椭圆形设计。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用负边距重叠LinearLayout中的项目,但不会按此顺序堆叠。

您可以使用RelativeLayout代替。您可以从外到内布置物品以达到所需的堆叠顺序。

这是一个固定宽度的例子:

<RelativeLayout android:layout_width="150dp" android:layout_height="wrap_content">
    <ImageView 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_alignParentLeft="true" android:layout_centerVertical="true" />
    <ImageView 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_alignParentRight="true" android:layout_centerVertical="true" />
    <ImageView 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_alignParentLeft="true" android:layout_centerVertical="true"
        android:layout_marginLeft="25dp" />
    <ImageView 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_alignParentRight="true" android:layout_centerVertical="true"
        android:layout_marginRight="25dp" />
    <ImageView 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" android:layout_centerVertical="true" />
</RelativeLayout>

如果您没有固定宽度的容器,则必须使用此方法计算代码中的边距。

当然,如果你没有固定的宽度,你仍然需要某种类型的代码,因为没有任何内置于android中的东西,这对于这种类型的的事情。

答案 1 :(得分:1)

您可以使用RelativeLayout执行此任务。这是一个例子:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="-18dp" />
    <ImageView
        android:id="@+id/img2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/img1"
        android:layout_marginRight="-18dp" />

    <ImageView
        android:id="@+id/img5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/img4"
        android:layout_marginRight="-18dp"/>
    <ImageView
        android:id="@+id/img4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/img3"
        android:layout_marginRight="-18dp" />
    <ImageView
        android:id="@+id/img3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/img2"
        android:layout_marginRight="-18dp" />

</RelativeLayout>

请注意,在这里,最后一个ImageView是最重要的{。}}。

答案 2 :(得分:0)

您正在寻找开发Carousel类型的小部件。你可以在android中引用任何Carousel实现。有许多可用,你可以在这里参考一个 https://code.google.com/p/carousel-layout-android/