2011-11-24 98 views
4

我有一個垂直方向的線性佈局,我在其中插入多個視圖組。其中之一是:線性佈局不對齊基線和相對佈局不允許權重

<LinearLayout 
    android:id="@+id/addedit_updowncontrol" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView2" 
    android:layout_marginBottom="5dp" 
    android:orientation="horizontal"> 

    <Button 
     android:id="@+id/addedit_btndecrement" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_weight="0.1" 
     android:text="-" /> 

    <EditText 
     android:id="@+id/addedit_txtQuantity" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:minWidth="90dp" 
     android:layout_weight="0.4" 
     android:layout_alignParentTop="true" 
     android:inputType="numberDecimal" /> 

    <Button 
     android:id="@+id/addedit_btnIncrement" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_weight="0.1" 
     android:layout_toLeftOf="@+id/addedit_units" 
     android:text="+" /> 

    <Spinner 
     android:id="@+id/addedit_units" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
      android:layout_weight="0.4" 
     android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" /> 

</LinearLayout> 

這讓我看起來像this(道歉的鏈接,我希望能有一個更好的方法)的圖。這是不可接受的,因爲按鈕不與EditText對齊。

我試着切換到RelativeLayout,它給了我類似於this的東西。這是不可接受的,因爲兩個按鈕( - )和(+)的寬度不一樣。

我想我想實現的是: (1)Button的基線與行中的其他控件對齊。 (2)兩個按鈕的寬度相同。 (1)RelativeLayout和(2)LinearLayout。但不是兩個。

任何人都可以幫助我嗎?

回答

4

使用

android:gravity="center_vertical" 

。所有項目都將居中

+0

謝謝!這工作,似乎比設置android:layout_marginTop =「 - 3dp」更好。 –

+0

我確實認爲這是佈局管理器或負責佈局的錯誤。 –

0

你可以嘗試幾件事情。首先將您的LinearLayout方向設置爲水平。您是否嘗試將RelativeLayout放入LinearLayout中?也許這也適用:在wrap_content上設置按鈕並在fill_parent上設置edit_text?

+0

剛將您的LinearLayout的方向設置爲水平。我試了一下,它爲我工作 – nostradamus

+0

也嘗試設置您的edittext的margintop高一點。 android:layout_marginTop(5dip)或其他可能工作的整數 – nostradamus

+0

將LinearLayout設置爲水平不適用於我。我仍然有對齊問題。我試過使用一個負面的android:layout_marginTop像這樣:android:layout_marginTop =「 - 3dp」。這確實將按鈕與EditText對齊。不過,我不確定這是否會與設備無關。 –

0

您已經爲LinearLayout指定了許多無用的屬性。例如,您不需要所有這些layout_alignParentTop,layout_toLeftOf等等for LinearLayout,它們被用於in RelativeLayout。試試這個:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/addedit_updowncontrol" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="5dp" 
    android:layout_below="@+id/textView2" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/addedit_btndecrement" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" 
     android:text="-" /> 

    <EditText 
     android:id="@+id/addedit_txtQuantity" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" 
     android:minWidth="90dp" 
     android:inputType="numberDecimal" /> 

    <Button 
     android:id="@+id/addedit_btnIncrement" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" 
     android:text="+" /> 

    <Spinner 
     android:id="@+id/addedit_units" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" /> 

</LinearLayout> 
+0

我知道,我很抱歉。我一直在佈局之間切換,看看我能否找到一個可行的方案。據我所知,不相關的那個被忽略。但我會嘗試清理,看看是否能解決任何問題。 –

+0

我已經爲你做了。我也修復了你的佈局,試試吧。 –

+0

謝謝。我知道了。基本上設置android:gravity =「center_vertical」似乎可以做到。 –

0

將線性佈局的方向更改爲水平,並在xml中將baselinealigned屬性設置爲true。使用layout_weights播放。爲兩個按鈕分配相同的權重。希望這有助於在你的LinearLayout

+2

默認情況下打開基線對齊。 –

0

我知道它不是很好,但保留LinearLayout並在EditText和Spinner上放置paddingTop =「2dp」或marginTop =「2dp」。

這些元素的9patch資產包括底部的填充,使得它們看起來像與其他所有元素不一致。

(我認爲它的2DP,這可能是3DP),如果這仍然是EditText上的問題在3.0+,因爲股票的設計是的EditText在全息主題完全不同

不知道