2012-02-28 82 views
0

©对线性布局有疑问。我觉得有些奇怪。所有这些都是相同的布局,但后面的按钮移动相关的图标buton.I想适合左侧的按钮和btn_header_what_search_user按钮想要正确的site.But他们正在移动相关的图标(中心图标)。为什么?以及如何退回左侧的按钮。Linearlayout重力问题?

enter image description here

我的代码:`

<LinearLayout android:layout_height="44dip" 
       android:layout_width="320dip" 
       android:background="@drawable/header_320_44dip"> 
    <ImageView 
      android:layout_width="121dip" 
      android:layout_height="32dip" 
      android:layout_gravity="center" 
      android:layout_marginLeft="90dip" 
      android:background="@drawable/icon"> 

    </ImageView> 

    <ImageView 
      android:layout_width="52dip" 
      android:layout_height="32dip" 
      android:layout_gravity="left" 
      android:background="@drawable/btn_back_52x32"> 

    </ImageView> 


    <ImageButton 
      android:layout_height="34dip" 
      android:layout_width="64dip" 
      android:id="@+id/btn_header_what_search_user" 
      android:layout_marginLeft="0dip" 
      android:background="@drawable/btn_nedit_nontext_64x34"> 
    </ImageButton> 
</LinearLayout> 

`

回答

2

LinearLayout不能很好地与重力沿着它的主要方向(即水平的LinearLayout不起作用支持left,right或center_horizo​​ntal,以及垂直的top,bottom或center_vertical)。
您可以尝试使用RelativeLayout并使用layout_alignParentLeft/layout_alignParentRight属性(或任何其他可用的属性)来获取正确的结果。

+0

所以如果我使用线性布局任何时候我不能使用对齐?如果我可以使用对齐我怎么可以在线性布局?而我最后的问题是为什么在添加项目之前关联?这是正常的吗?我在想移动相关的0,0点? – DuyguK 2012-02-28 13:10:13

+0

LinearLayout中的项目是从左到右和从上到下依次添加的。这就是为什么你的布局中的项目安排受到干扰。 – Maneesh 2012-02-28 13:13:52

+0

不同的'align'属性对'RelativeLayout'是唯一的,这意味着你不能在'LinearLayout'中使用它们。 'RelativeLayout'还具有“toLeftOf”,“toRightOf”,“above”和“below”的属性,可用于相对于彼此定位视图。在LinearLayout中,添加的每个视图都按它们在xml中出现的顺序出现,也就是说,您的图标出现在后退按钮之前,因此放置在它之前。 – Jave 2012-02-28 13:19:07

3

你应该使用相对布局

<RelativeLayout android:layout_height="44dip" 
       android:layout_width="320dip" 
       android:background="@drawable/header_320_44dip"> 
    <ImageView 
      android:layout_width="121dip" 
      android:layout_height="32dip" 
      android:layout_centerInParent="true" 
      android:layout_marginLeft="90dip" 
      android:background="@drawable/icon"> 

    </ImageView> 

    <ImageView 
      android:layout_width="52dip" 
      android:layout_height="32dip" 
      android:layout_alignParentLeft="true" 
      android:background="@drawable/btn_back_52x32"> 

    </ImageView> 


    <ImageButton 
      android:layout_height="34dip" 
      android:layout_width="64dip" 
      android:id="@+id/btn_header_what_search_user" 
      android:layout_marginLeft="0dip" 
android:layout_alignParentright="true" 
      android:background="@drawable/btn_nedit_nontext_64x34"> 
    </ImageButton> 
</RelativeLayout> 
0

另一种解决方案可能是使用布局权重。设置总权重3,然后为每个图像视图设置权​​重1。这样布局分成3部分,你应该能够调整每个部分的重力。类似的东西:

<LinearLayout 
    ... 
    android:weightSum="3" > 

    <ImageView 
     ... 
     android:layout_width="0dp" 
     android:layout_weight="1" /> 
+0

什么是做体重?我在想如果我想使用这个屏幕的百分比? – DuyguK 2012-02-28 13:13:21

+0

随着体重的增加,您可以动态分配您的布局,具体取决于您使用的因素。另一个使用不同因素的例子,如weightSum =“10”,一个imageView有5个,两个textview两个。只是玩弄它,但请记住将layout_width始终设置为0dp,否则将无法工作...... – ramdroid 2012-02-28 14:14:23