2016-06-27 107 views
0

我的問題是,所有這些視圖有不同的左邊距,當我把它們放在另一個下面時,它看起來很混亂。對齊材質edittexts,textviews,複選框等

我該如何解決?有沒有很酷的方法來解決這個問題?

我試圖把一些額外的填充,如2dp爲edittexts和4dp爲textviews,但它似乎不工作,因爲不同的設備上填充不同。

示例(在Google官方應用中並非如此): enter image description here 這裏沒有什麼特別的佈局,只是沒有任何附加屬性的視圖。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/input_layout_password" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="0dip"> 

     <EditText 
      android:id="@+id/text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/network_password" 
      android:inputType="textPassword"/> 

    </android.support.design.widget.TextInputLayout> 

    <CheckBox 
     android:id="@+id/checkbox" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/show_password"/> 

</LinearLayout> 
+0

請分享您的佈局。 –

回答

1

與其爲每個視圖添加填充,您應該將其中一個添加到包含該窗體的佈局。這樣,所有視圖都將被正確對齊。

<LinearLayout 
    ... 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    android:paddingBottom="16dp"> 

    <!--Your form inputs--> 

</LinearLayout> 

新創建的活動在根佈局周圍已經有16dp的填充。

值'16dp'應該保存爲維數,而不是硬編碼。

+0

是的,多數民衆贊成在我的活動/對話。問題是每一個內置的材質控制已經有了不同的填充。 – JaLoveAst1k

0

我會建議管理margin和padding這樣:

  1. /res/根據屏幕密度(如values-w820dp)然後創建dimens.xml創建多個values文件夾在每個屏幕密度的適當值的文件夾下。 follow this guide
  2. 如果可能,始終使用RelativeLayout而不是LinearLayout。如果您的問題只是對齊,那麼您總是可以使用RelativeLayout的屬性(如android:layout_alignRight="@id/id_of_view")來管理對齊。