搜尋

首頁  >  問答  >  主體

android:怎么实现一个控件与另一个指定控件左对齐

如图,我想通过如下代码实现第二个edittext与第一个edittext左边缘对齐,但是行不通,求指点。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    
    
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="用户名" />
    
    <EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" >

    <requestFocus />
</EditText>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="密码" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:layout_alignLeft="@id/editText1" />

</LinearLayout>
天蓬老师天蓬老师2772 天前861

全部回覆(12)我來回復

  • 高洛峰

    高洛峰2017-04-17 14:50:52

    針對你這種情況,最簡單的一種方法是,設定兩個TextView的寬度為固定值,且相等。

    LinearLayout是一種線性排列的佈局,佈局中的控制由左至右(或由上至下)依序排列。 wrap_content依據其內容分配寬度,「使用者名稱」和「密碼」由於內容長度不同,導致對應的兩個TextView不等寬,而其後緊跟著EditText,這導致了不對齊。

    第2種方法,把LinearLayout中的元件寬度設定為0dp,然後設定其android:layout_weight,例如TextView設定為0.2,EditText設定為0.8,這兩個控制項就會按比例分配整個LinearLayout的寬度。第二個LinearLayout也同樣設置,就可以確保EditText對齊。

    第3種方法,使用RelativeLayout,透過android:layout_alignLeft="@id/anotherViewId"設定該View的左邊和指定View的左邊對齊。
    但是你這種版面狀況很簡單,我認為用方法1和2比較方便。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:50:52

    設權重、設固定值、相對佈局等就不多說了!

    推薦使用GridLayout
    用GridLayout佈局能完美的解決你這類問題,還能減少LinearLayout的應用
    具體用法參考:淺談android4.0開發之GridLayout佈局
    註:4.0以上的系統可直接使用,4.0以下的需要導入v7包

    評論裡有人說了使用TableLayout,不過需要和TableRow結合使用來佈局,並不推薦。
    TableLayout相關用法參考:android佈局------TableLayout(表格佈局)詳解

    GridLayout與TabLayout的差異參考:GridLayout與TableLayout佈局

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:50:52

    看看相對版面!

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:50:52

    給textview一樣的固定寬度

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:50:52

    LinearLayout是不支援android:layout_align*屬性的,想要使用這一系列的屬性,可以換成RelativeLayout。
    但看你的需求,其實可以使用TableLayout(當然官方說已經過時了,不建議使用),或者像上面的回答那樣,將layout_width設置為0dp,通過weight權重來為組件定寬,這也是大家寫這種頁面最常用的做法。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 14:50:52

    想對齊有個超簡單的解決方法... 密碼兩個字中間加個全角空格

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 14:50:52

    這麼簡單的問題。 。 。 maginLeft="100dp"

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 14:50:52

    也可以用tablelayout

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 14:50:52

    1.最簡單的辦法,改成相對佈局,拖曳到對齊就行了。
    2.給兩個輸入框分別佈局線性佈局,讓兩個線性佈局對齊就行了。

    回覆
    0
  • PHPz

    PHPz2017-04-17 14:50:52

    給你一個建議,在LinearLayout中,利用View的weight屬性來控制子空間的佔空比
    比如給Text的weight設定1,EditText的weight設定2,那麼在水平佈局中,兩個控制項就是1:2的關係,自然上下兩個EditText也對齊了

    回覆
    0
  • 取消回覆