2012-05-16 83 views
0

首先,圖像(來自hierarchyviewer):的Android layout_margin衝突屬性

Good and bad buttons

我有文本的不同長度,我想是相同的大小兩個按鈕。在圖片中,你可以看到這在頂部工作。但是,我想在按鈕之間留出一些空間,因此對於第三個和第四個按鈕,我添加了layout_margin屬性以給它們一點空間。混沌隨之而來。第四個按鈕保持相同的大小並添加適當的邊距。但第三個按鈕似乎沒有在右側添加邊距,因此會損失寬度。

我認爲正在發生的事情是在對齊後應用邊距,所以...實際上,我不能想出一個完全解釋它的過程。

我想的是:

  • 爲了理解這個東西是如何工作的 - 視圖的佈局似乎 直觀我,我無法想象在某個時刻我不 隨機變化屬性來解決這類問題。 有一個完整的教程,涵蓋了基本原理?

  • 兩個相等長度的按鈕與不同長度的文本在相對的具有空白的 佈局中。我需要相對佈局來安排活動中的所有其他視圖。

代碼如下。

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <Button 
     android:id="@+id/goodThis" 
     android:text="Short text" 
     android:background="@drawable/button_red" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:layout_alignParentLeft="true" 
     android:layout_alignRight="@+id/goodThat" 
    /> 
    <Button 
     android:id="@+id/goodThat" 
     android:text="Longer text" 
     android:background="@drawable/button_green" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/goodThis" 
    /> 

    <Button 
     android:id="@+id/badThis" 
     android:text="Short text" 
     android:background="@drawable/button_red" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:layout_below="@+id/goodThat" 
     android:layout_alignParentLeft="true" 
     android:layout_alignRight="@+id/badThat" 
     android:layout_margin="3dp" 
    /> 
    <Button 
     android:id="@+id/badThat" 
     android:text="Longer text" 
     android:background="@drawable/button_green" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/badThis" 
     android:layout_margin="3dp" 
    /> 
</RelativeLayout> 
+0

我只能說我在RelativeLayouts中也觀察到了一些奇怪的行爲,我不得不試驗一下才能找到解決方法。我知道,我通常避免提出參考文獻,因爲您從badThis做到了後面的badThat。 – gordonwd

+0

我很高興放棄前瞻性參考(我有點驚訝它的工作)。我只是想了解如何創建足夠靈活的UI來處理不斷變化的屏幕尺寸,而且還允許您在兩個維度上進行排列。 (並讓我的按鈕之間有空間!) – TomDestry

回答

3

把我的反應更多的是比我的上述評論的答案,我已經學會了我的RelativeLayout經驗如下:

1)消除向前ID引用。這可能使得找出如何做到這一點更困難,但是你可以看到像這樣解析引用將需要在運行時至少兩次通過佈局規範,並且可能使事情複雜化。

2)我通常使用特定的邊距/填充屬性,如layout_marginTop等來獲得更好的結果。您使用毯子「layout_margin」會將第3個和第4個按鈕向右偏移一點,這可能不是您想要的樣子。嘗試僅使用marginTop將按鈕分隔開。