明确布局UI

时间:2010-10-14 21:17:13

标签: android

我发现需要通过给出大多数所有子视图的尺寸和位置来手动布置相当复杂的UI。我的计划是最初为480x320显示器编写XML代码,让它完全适用于给定设备上的客户端演示,然后通过编程调整视图的大小和位置来修改它以适应生产,以使其适应任何屏幕大小它正在运行。

首先......我知道这不是推荐的方法。我花了很多时间试图使自动布局正常工作(以及动画)。老实说,我不认为它们是按照客户想要的方式制作的,而我只是没有时间来处理它。 (也不学习制作灵活的自定义布局)

鉴于此,我应该在哪里进行测量/定位?我可以在onMeasure()上设置大小(忽略传入的参数,而不是基于我对Activity开始时测量的屏幕分辨率的知识),但是我在哪里设置每个视图的位置?在onLayout()?假设所有视图都是子类(而不是使用开箱即用的组件)

理想情况下,我想在一个地方测量屏幕分辨率,然后抓住每个视图并设置其x,y,宽度和高度。那可能吗?如果是这样的话?

编辑:现在提供赏金。请注意,我还绘制了一个我正在尝试解决的一个简单问题的草图 - http://karmalita.com/stuff/layout.png - 如果你能以“正确”的方式(比如使用相对布局)这样做,那么赏金就是你的

2 个答案:

答案 0 :(得分:1)

从图中,基本结构可能如下所示。通常,您不会为布局宽度和高度指定“50dp”等绝对值,而是依靠视图来报告其所需的大小。例如,如果您的顶栏是一个带有文本内部的9-patch边框,您可以将其设置为TextView,您可以在其中指定文本并使用android:background =“@ drawable / ...”设置9-patch,以及让文本视图根据9-patch的文本大小和填充来计算其适当的宽度和高度。 (并且使用match_parent忽略该大小并允许它伸展以填充其父级,或使用wrap_content来使用其所需的大小。)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  <View
      android:layout_width="match_parent"
      android:layout_height="50dp" />
  <View
      android:layout_width="match_parent"
      android:layout_height="0px"
      android:layout_weight="1" />
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal">
      <View
          android:layout_width="??dp"
          android:layout_height="55dp" />
      ...
  </LinearLayout>
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal">
      <View
          android:layout_width="??dp"
          android:layout_height="60dp" />
      ...
  </LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

正如Falmarri指出的那样,不要仅为480x320创建它,而是从一开始就使它变得相当大。
你能提供关于用户界面的一些细节吗?草图可能吗?使用布局组合应该是可能的,即使它很复杂。