2011-03-02 110 views
1

我是一個完整的初學者與Android開發,我試圖做一些事情,我覺得應該應該是簡單的,但似乎不是(對我來說,無論如何)。下面的真棒ASCII藝術展示他們的佈局我想要實現:全屏Android佈局2行

--------------------- 
|     | 
|     | 
|     | 
|     | 
|     | 
|  Main View  | 
|     | 
|     | 
|     | 
|     | 
|     | 
--------------------- 
||btn a|  |btn b|| 
--------------------- 

整個佈局應填寫與底部排在屏幕正停靠在屏幕的底部(重力?)和頂部連續服用在屏幕的其餘部分,它應該是流體(即,如果設備的方向發生變化,也應該是這樣的:

--------------------------- 
|       | 
|       | 
|  Main View  | 
|       | 
|       | 
--------------------------- 
||btn a|   |btn b|| 
--------------------------- 

如果我在HTML中工作,這將與TABLE元素,2 TR輕鬆完成元素(第一個行跨度爲2)和第二行中的幾個TD元素(第二個元素的align值設置爲右)(對於Web UI夥計readi在這種情況下,我會在實踐中使用DIV元素和CSS進行佈局)。

所以,我的問題是獲得第一行來填補可用的高度。我可以編寫一個簡單的算法,在java代碼中執行此操作,但希望使用XML進行佈局。有沒有簡單的方法來做到這一點?我的代碼如下:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1"> 
    <TableRow> 
     <WebView android:id="@+id/site" 
      android:layout_span="3" /> 
    </TableRow> 
    <TableRow> 
     <Button android:id="@+id/back" 
      android:text="btn a" /> 
     <View android:id="@+id/filler" /> 
     <Button 
      aroid:id="@+id/forward" 
      android:text="btn b" /> 
    </TableRow> 
</TableLayout> 
+1

我覺得RelativeLayout的可能是非常有幫助的:http://developer.android.com/resources/tutorials/views/hello- relativelayout.html – Klaus 2011-03-02 15:40:44

+0

有一堆解決方案提供給這個問題,我敢肯定,他們中的很多人工作很好,但我只嘗試過一個,它爲我工作。感謝大家的幫助。 – 2011-03-02 17:37:06

回答

4

重量是正確的選擇,嘗試了這一點(測試

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1"> 
    <LinearLayout android:layout_height="fill_parent" 
        android:layout_width="fill_parent" 
        android:id="@+id/linearLayout2" 
        android:layout_weight="1"> 
     <WebView android:layout_height="wrap_content" 
       android:id="@+id/site" 
       android:layout_width="wrap_content" /> 
    </LinearLayout> 
    <LinearLayout android:id="@+id/linearLayout1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"> 
     <Button android:layout_weight="2" 
       android:text="Button" 
       android:id="@+id/button1" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"></Button> 
     <Button android:layout_weight="2" 
       android:text="Button" 
       android:id="@+id/button2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"></Button> 
    </LinearLayout> 
</TableLayout> 
+0

很好,這工作完美。謝謝。 – 2011-03-02 17:36:00

0

我還沒有測試過它,但這應該在理論上起作用。會考慮它,只要我回到電腦:)

<?xml version="1.0" encoding="UTF-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     > 
     <Button 
      android:id="@+id/btna" 
      android:layout_height="42dp" 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:text="Button A"" 
     /> 
     <Button 
      android:id="@+id/btnb" 
      android:layout_height="42dp" 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:text="Button B" 
     /> 
    </LinearLayout> 
</RelativeLayout> 
0

你可以嘗試開溝TableLayout和web視圖設置權​​重:

<WebView 
    android:id="@+id/site" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" /> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    (**Button, filler View, Button go here**) 
</LinearLayout> 

我沒有測試過這一點,但它應該接近。

0

使用RelativeLayout似乎對我來說過度殺傷,並且layout_alignParentBottom不能總是被信任。

嘗試:

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <WebView android:id="@+id/site" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <Button 
      android:id="@+id/btna" 
      android:layout_height="42dp" 
      android:layout_width="wrap_content" 
      android:text="Button A"> 
     <View android:id="@+id/filler" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1"/> 
     <Button 
      android:id="@+id/btnb" 
      android:layout_height="42dp" 
      android:layout_width="wrap_content" 
      android:text="Button B"/> 
    </LinearLayout> 
</LinearLayout> 

你可以做很多事的LinearLayoutlayout_weight

+0

爲什麼layout_alignParentBottom不能總是被信任?使用RelativeLayout,可以避免使用兩個或多個嵌套的LinearLayout。 – Adinia 2011-03-02 16:43:27

+0

這取決於佈局的其餘部分。例如:https://code.google.com/p/android/issues/detail?id=1394。過去對我來說,這是一個錯誤,我更喜歡其他佈局。 – 2011-03-02 17:04:10

+0

確實,謝謝你的鏈接;我同意它有時可能會很棘手,但在這種情況下,沒有ListView,所以我不認爲應該有問題。對我來說,RelativeLayout似乎比內嵌LinearLayouts更容易,但我不能說我是一個專家:) – Adinia 2011-03-02 21:08:36