2012-12-20 169 views
2

我正在尝试执行我的第一个应用。根据百分比创建布局

我在做一个包含四行的布局。第一排(10%身高),第二排(40%身高),第三排(40%身高),第四排(10%身高)排名第一排。

现在,我正在使用垂直方向的线性布局。使用权重总和和权重,我在每一行都有正确的比例。

但是,如果我在第二行和第三行使用线性布局权重,那么我会收到关于嵌套权重和不良性能的警告。我明白糟糕的性能问题,但我不知道如何解决我的问题。

我需要每个图像是其父宽度的50%。

感谢您的帮助。

编辑:这是我想要完成 https://dl.dropbox.com/u/252856/androidlayout.jpg

+1

根据我的经验,我一直担心表现不好,但从未注意到它。我在过去读过它,看起来这可能是一个问题,尤其是如果你对列表视图(列表视图的每一行具有嵌套权重)进行此操作,并在列表中显示1000个视图。但从静态角度来看,您可能不必担心 – Jameo

+0

hi @jameo感谢您的回复。正如我所说,我正在学习android,并且我想从开始就以正确的方式进行。所以,如果谷歌说这是不好的方法,我想避免它 – Chux

+0

基本上,你可能能够完成这个不同的方式,但它会过于复杂,并不适用于所有情况。只是因为android警告你并不​​意味着它的__wrong__ – Jameo

回答

2

在您的具体情况,你可以使两个ImageViews占据父母的宽度的50%,而不使用权用这样的块:

<RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" 
    android:layout_weight="your_value"> 
    <View android:id="@+id/anchor" android:layout_width="0dp" 
      android:layout_height="match_parent" android:layout_centerHorizontal="true"/> 
    <ImageView android:layout_width="wrap_content" 
      android:layout_height="match_parent" android:layout_alignParentLeft="true" 
      android:layout_alignRight="@id/anchor" /> 
    <ImageView android:layout_width="wrap_content" 
      android:layout_height="match_parent" android:layout_alignParentRight="true" 
      android:layout_alignLeft="@id/anchor" /> 
</RelativeLayout> 
+0

,但我需要这两个图像是父母的50%,因为图像太大 – Chux

+0

@Chux您是否尝试过我的代码? “RelativeLayout”组代表布局图片中的一个40%组。我编辑了我的答案。 – Luksprog

+0

它的工作原理非常感谢。我知道理解你的解决方案,你只需要在中心放置一个不可见的视图,因为你需要两个柱子,并对齐每个图像的边缘。但是......如果我需要每行3个图像呢? – Chux

0

你可能想看看,并考虑是否可以使你的布局工作为GridLayout快速样机。它旨在处理您想要将UI元素排列为大致类似网格的模式的情况,同时避免嵌套权重可能导致的性能问题。如果你的UI适合这种布局,你可以通过利用它来实现simpler implementation and faster performance

我相信通过支持库可以在API层7的早期支持GridLayout。