【问题标题】:create a linear layout of overlapping imageviews创建重叠图像视图的线性布局
【发布时间】:2014-06-27 09:38:59
【问题描述】:

我需要在 Android 中创建一个重叠的 ImageViews 堆栈,就像 Windows 中的 Spider Solitaire 一样。另外,我需要能够动态添加更多ImageViews。请建议这样做的方法。我可以使用LinearLayout(没有必要。不管用什么都可以)?如果是这样,我该如何完成重叠?

注意:所有ImageViews会有相同数量的重叠,所以不用担心给出截图中未打开的卡片。

谢谢

【问题讨论】:

  • 我不认为你可以使用Linearlayout实现这一目标
  • @SMR 任何工作都可以。 LinearLayout 不是必需的。

标签: android android-layout android-listview imageview android-linearlayout


【解决方案1】:

用户LayerList

A LayerDrawable is a drawable object that manages an array of other drawables. 
Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" >
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" >
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

注意:以下图片使用项目属性为android:left="10dp", android:left="20dp"。

【讨论】:

  • 如何动态添加新图层?
【解决方案2】:

您可以使用FrameLayout。以下布局是一个带有 3 ImageViews 的示例:

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

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:background="#f00" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:background="#0f0" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="40dp"
        android:background="#00f" />

</FrameLayout>

【讨论】:

【解决方案3】:

我认为您不能仅使用Linearlayout 来实现这一点。

但你可以使用LayerList

LayerDrawable 是一个可绘制对象,用于管理其他数组 绘图。列表中的每个可绘制对象都按顺序绘制 列表——列表中的最后一个可绘制对象绘制在顶部。

借助 LayerList,您可以实现以下目标:

语法

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</layer-list>

【讨论】:

  • 如何动态添加更多层?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 2011-05-16
相关资源
最近更新 更多