2013-11-15 114 views
0

正確位置按鈕我有一個如下的佈局:機器人:內部佈局

enter image description here

<LinearLayout //container, should adjust height based on CONTENT view height 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:baselineAligned="false" 
     android:clickable="false" 
     android:padding="20dp"> 
    <RelativeLayout //this is the CONTENT view height 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="5">....</RelativeLayout> 
... 
    <RelativeLayout //this is the button layout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="2"> 

      <Button android:layout_width="40sp" android:layout_height="40sp"/> 
      <Button android:layout_width="40sp" android:layout_height="40sp"/> 
    </RelativeLayout> 

</LinearLayout> 

我想要的容器(LinearLayout)的高度進行調整,以包含所有在RelativeLayout(意見如左圖所示,我們稱它爲CONTAINER)。

然後,在RelativeLayout(右側顯示)中有兩個按鈕。我需要相應地在RelativeLayot的頂部和底部邊界對齊它們。真正重要的是,按鈕容器的高度應該與CONTAINER的高度相同(應該對應)。

問題是,如果我嘗試使用按鈕的android:layout_alignParentBottom="true"android:layout_alignParentTop="true"屬性,它們將拉伸容器高度,並且它將佔用整個屏幕高度。

那麼,我應該用什麼魔術來完成這個訣竅呢? :)

回答

0

使用此

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:baselineAligned="false" 
     android:clickable="false" 
     android:padding="20dp"> 
    <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="5"></RelativeLayout> 

    <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_weight="2"> 

      <Button android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true"/> 
      <Button android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true"/> 
    </RelativeLayout> 

</LinearLayout> 
+0

不,這是不想要的,因爲這會拉伸根LinearLayout – Drew

1

試着將你的右手相對佈局頂部和底部的左側一個。 嘗試是這樣的:

<RelativeLayout //container, should adjust height based on CONTENT view height 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:baselineAligned="false" 
     android:clickable="false" 
     android:padding="20dp"> 
    <RelativeLayout //this is the CONTENT view height 
      android:id="@+id/contentRL" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="5" 
      android:layout_alignParentLeft="true">....</RelativeLayout> 
... 
    <RelativeLayout //this is the button layout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="2" 
      android:layout_alignTop="@id/contentRL" 
      android:layout_alignBottom="@id/contentRL" 
      android:layout_alignParentRight="true"> 

      <Button android:layout_width="40sp" 
      android:layout_height="40sp" 
      android:layout_alignParentTop="true"/> 
      <Button android:layout_width="40sp" 
      android:layout_height="40sp" 
      android:layout_alignParentBottom="true"/> 
</RelativeLayout> 

+0

嗯,'RelativeLayout'似乎沒有這樣的(或類似的屬性)。任何其他方式? – Drew

+0

我已經更新了我的答案,請再次檢查並讓我知道。 (將主佈局更改爲相對和適應孩子RelativeLayouts的位置)。 –

+0

這不起作用 - layout_weight的視圖應該有一個父LinearLayout。但使用你的建議,我找到了做我需要的方式。 – Drew

0

好吧,基於達米安R.提供上述我順利地通過執行以下完成的任務提示:

  • 使用RelativeLayout與根參數layout_width="wrap_content",layout_height="wrap_content"
  • 使用LinearLayout作爲圍繞容器RelativeLayout s的「包裝」。這是因爲我需要使用layout_weight屬性來佈置這些容器。
  • RelativeLayoutlayout_height應該是fill_parent。在RelativeLayout屬性中無需使用android:layout_alignBottom="@id/..."android:layout_alignBottom="@id/..."。這如果RelativeLayout是另一個RelativeLayout孩子View只會工作,這是不是這樣的,因爲我需要使用LinearLayout的體重

的代碼是:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:baselineAligned="false" 
    android:clickable="false" 
    android:padding="10dp"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ticketbackground" 
     android:id="@+id/ticket_layout" 
     > 

     <RelativeLayout 
      android:id="@+id/contentRL" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="5" 
      android:layout_alignParentLeft="true"> 
     </RelativeLayout> 

<!--second column--> 
     <RelativeLayout 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="3"> 
       ... 
     </RelativeLayout> 
<!--third column with buttons--> 
     <RelativeLayout 
      android:id="@+id/sdfsdf" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="2"> 

      <Button... 
       android:layout_alignParentTop="true" /> 
      <Button... 
       android:layout_alignParentBottom="true" /> 
     </RelativeLayout> 
    </LinearLayout> 
</RelativeLayout>