【问题标题】:How to create a Layout were I can place anything where I want?如果我可以将任何东西放在我想要的地方,如何创建布局?
【发布时间】:2012-02-09 23:38:20
【问题描述】:

我正在设计一个应用程序,其中有许多图像、按钮和文本视图散布在屏幕上。目前我正在使用相对布局,因为它似乎是最灵活的。但是,如果我放置了我的元素并且它们的大小仍然被限制为与其他元素对齐。更糟糕的是,如果一个元素改变了大小,任何与其对齐的元素也会改变大小。

必须有一个简单的解决方案! Apple 的 nib 文件可以轻松地执行此操作,只需轻松拖放到任何位置;然而,android 似乎陷入了限制性的表格/线性/相对/网格布局。

如果可能,可以通过 eclipse 执行解决方案。如果不是,请指导我查阅相关文档,学习通过 xml 创建自己的布局、创建巨大的网格布局或等待我的任何恐怖:) 谢谢

【问题讨论】:

    标签: java android xml layout android-relativelayout


    【解决方案1】:

    我认为你想要的是绝对布局,虽然这些在前一段时间被弃用了,我很确定你仍然可以通过相对布局来做到这一点,你不一定需要将通孔与另一个视图对齐,我猜你可以这样做:

    <?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/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="70dp"
            android:layout_marginTop="82dp"
            android:src="@drawable/ic_launcher" />
    
        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="172dp"
            android:layout_marginRight="84dp"
            android:src="@drawable/ic_launcher" />
    
    </RelativeLayout>
    

    我在这里所做的只是将它与父级的一侧对齐并在它之间留出一个边距

    【讨论】:

    • 这不会导致绝对布局遭受同样的问题吗?不同的屏幕尺寸会产生不同的结果。
    • 因为你处理的是 dp 而不是 px 它取决于屏幕。
    • 我想你的意思是deprecated
    【解决方案2】:

    您可以使用框架布局并设置每个对象的位置来满足您的要求。但这样做需要您自担风险。 Apple nib 文件允许您任意放置对象的原因是它们所有设备的纵横比都是相同的。所以你的布局只是均匀地放大和缩小。

    Android 是一个更加多样化的生态系统,您应该尝试采用适应不同屏幕尺寸和方向的布局。

    【讨论】:

    • 会按照你的建议做,但使用显示像素而不是像素允许布局适应不同的屏幕尺寸?还是会出现同样的问题?如果不是,为什么没有更新绝对布局以包含 dps 而不是 pxs?
    【解决方案3】:

    看看Android custom layoutAndroid - How to draw a letter at a specific point?

    您是否打算仅在单个 Android 设备型号上使用该应用?如果是,请查看AbsoluteLayout 的替代方案。 (FrameLayout 或RelativeLayout)

    将“任何你想要的任何东西”放在任何地方都不是一个好主意,因为 Android 设备有很多不同的屏幕尺寸和属性。唯一的选择是定义您自己的自定义布局。

    我真的很喜欢 Android 尝试使用对齐和结构化布局视图使您的布局与尽可能多的设备兼容的方式。

    这对 Apple 来说很简单,因为您只针对 iPhone,它在所有设备上都有固定的屏幕属性。

    希望对您有所帮助。祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      相关资源
      最近更新 更多