2016-06-27 5 views
0

私は、これらのビューのすべてが異なる左パディングを持っていることを私は知っています。素材編集テキスト、テキストビュー、チェックボックスなどを整列する

どうすれば修正できますか?この問題を解決するためのクールな方法はありますか?

edittextsの場合は2dp、textviewsの場合は4dpのような追加のパディングを追加しようとしましたが、異なるデバイスの異なるパディングのために動作しないようです。

例(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'は、dimenとして保存する必要があります。ハードコードしないでください。

+0

はい、それは私の活動/ダイアログでどのように行われるかです。問題は、組み込みのすべてのマテリアルコントロールに既に異なるパディングがあることです。 – JaLoveAst1k

4

これを行うにはクールな方法はありません。次の戦略は、私にとって最高の作品:

  • はすべてが(非常に高速Instant Run付き)のグリッドに一致するまで
  • がパディング/マージンを調整し、グリッドを描画するために自分の携帯電話に私のXML
  • 実行Material Cueに、すべてのビューを追加します。
  • トリミング効果を確認します。必要に応じてandroid:clipChildren="false"またはandroid:clipToPadding="false"

0

を追加私はマージンとパディングをこのように管理することをお勧めします:

  1. /res/の下の画面密度に応じて複数のvaluesフォルダを作成します(例:values-w820dp)、その後dimens.xmlを作成しますこれらのフォルダの下には、各画面の密度に適した値が設定されています。 follow this guide
  2. 可能であれば、は常にLinearLayoutではなくRelativeLayoutを使用します。あなたの問題がちょうど整列であるならば、アライメントを管理するのにRelativeLayoutの属性、例えばandroid:layout_alignRight="@id/id_of_view"をいつでも使うことができます。
関連する問題