2012-06-14 47 views
0

我想顯示三個不同的值分配給兩個不同的標題,換句話說與一個值和第二個帶有兩個值經由機器人機器人2個linearlayouts具有等同分區:layout_weight不在行

我的第一報頭方法是將「標題線性佈局」40/60和「值線性佈局」40/30/30分開。爲了不顯示從邊界開始的文本,我把任何地方放入了一個android:layout_marginLeft="15dp",所以最後它應該保持成比例。

在我的XML,我聲明如下:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView 
     android:layout_weight="4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:text="@string/txt_price_chf" 
     /> 
    <TextView 
     android:layout_weight="6" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:text="@string/txt_price_offshore_chf" 
     /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView android:id="@+id/tv_price_ch" 
     android:layout_weight="4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:text="Value1" 
     /> 

    <TextView android:id="@+id/tv_price_off_chf" 
     android:layout_weight="3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:text="Value2" 
     /> 

    <TextView android:id="@+id/tv_price_off_eur" 
     android:layout_weight="3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:text="Value3" 
     /> 
</LinearLayout> 

結果輸出如下:

enter image description here

爲什麼 「價格離岸:」 - 的TextView和 「值2」 -TextView不符合?請注意,「離岸價格」保存在我的strings.xml中,不存在像空白或其他任何錯誤。首先,我認爲,它是由android:layout_marginLeft="15dp"造成的,但

  • 怎麼我的理解它的「DP」是一個相對值,以特定的 分辨率(因此通過android:layout_weigth不應該 影響這個分割出來的)和

  • 如果我刪除邊距,它們仍然不在 一行。

有沒有人有想法?我忽略了一些明顯的東西嗎

回答

1
<TextView 
     android:layout_weight="4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="-10dp" 
     android:text="@string/txt_price_chf" 
     /> 

這會爲你工作...

+0

@Anu這確實有效。刪除marginLeft只適用,如果我在TextView「Price in CH」中刪除它們。我認爲在TextView中設置邊距不會干擾第二個邊界,因爲賦予了「權重」屬性,所以邊距應該只在該空間中有效。但顯然情況並非如此。所以'marginRight =「 - 10dp」'「會平衡整個事情。謝謝您的幫助! –

0

雖然不是你應該用LinearLayout做的事。

我建議使用RelativeLayout,那麼你可以說這兩個應該對齊。

在這種特殊情況下,不要深入細節,它可以是marginRight,padding等,或者只是非等寬字體的副作用。

+0

我可以試試這個。我發佈了更多關於如何行事的問題,因爲在我看來,沒有「邏輯原因」 –

0

或者另一種選擇是這樣的:

 <LinearLayout 
     android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_weight=".60" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="txt_price_chf" /> 

    <TextView 
     android:id="@+id/tv_price_ch" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Value1" /> 
    </LinearLayout> 


     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:layout_weight=".40" 
      android:orientation="vertical" > 

     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="txt_price_offshore_chf" /> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/tv_price_off_chf" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Value2" /> 

     <TextView 
      android:id="@+id/tv_price_off_eur" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Value3" /> 
    </LinearLayout> 
</LinearLayout>