2017-04-12 23 views
4

私はAndroidスタジオで始めており、垂直コンテンツをConstraintLayoutに集中しようとしていますが、成功することはありません。私はandroid:gravity="center"を使用しようとしましたが、すべての要素のapp:layout_editor_absoluteYを削除しましたが、発生しません...どうして私はこれを一元管理できますか?Android StudioでConstraintLayoutコンテンツを垂直方向にセンターする方法は?

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@layout/gradient" 
    android:gravity="center" 
    tools:context="com.test.test.MainActivity" 
    tools:layout_editor_absoluteY="81dp" 
    tools:layout_editor_absoluteX="0dp"> 

    <EditText 
     android:id="@+id/txtEmail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:ems="10" 
     android:hint="@string/lblEmail" 
     android:inputType="textEmailAddress" 
     android:textColorHint="@color/colorGray" 
     android:background="@color/colorWhite" 
     android:padding="15dp" /> 

    <EditText 
     android:id="@+id/txtSenha" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:hint="@string/lblSenha" 
     android:inputType="textPassword" 
     android:textColorHint="@color/colorGray" 
     android:background="@color/colorWhite" 
     android:padding="15dp" 
     app:layout_constraintTop_toBottomOf="@+id/txtEmail" /> 

    <Button 
     android:id="@+id/btnEntrar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:text="@string/lblEntrar" 
     app:layout_constraintTop_toBottomOf="@+id/txtSenha" /> 

</android.support.constraint.ConstraintLayout> 
+1

だけでは、制約レイアウトや制約レイアウト自体の内部要素をセンタリングしたい明確にしますか? – Juanca

+0

@Juanca私は要素を中心にしたい、彼らは現在トップに位置しています: – Igor

答えて

8

ConstraintLayoutは、あなたが作ることができる配置で、かなり柔軟ですが、あなたの説明から私は「パックチェインは」あなたが求めて何合うと思います。

"チェーン"は、ある行のすべてのビューが両方向で互いに制約されることを意味します。そのため、トップビューは次のビューに制約され、その次のビューはトップビューに戻るよう制限されます。鎖。チェーンがどのように動作するかについていくつかの選択肢があります。だから、(余分なものを簡単にするために除去される)あなたの例では:チェーンで

<android.support.constraint.ConstraintLayout 
.... 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <EditText 
     android:id="@+id/txtEmail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ... 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toTopOf="@+id/txtSenha" 
     app:layout_constraintVertical_chainStyle="packed" /> 

    <EditText 
     android:id="@+id/txtSenha" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ... 
     app:layout_constraintTop_toBottomOf="@+id/txtEmail" 
     app:layout_constraintBottom_toTopOf="@+id/btnEntrar"/> 

    <Button 
     android:id="@+id/btnEntrar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ... 
     app:layout_constraintTop_toBottomOf="@+id/txtSenha" 
     app:layout_constraintBottom_toBottomOf="parent"/> 

</android.support.constraint.ConstraintLayout> 

、上面図は(または水平チェーン放置)あなたはこの中で、チェーンの動作を変更することができ、「頭」でありますケースchainStylepackedであり、すべてのビューが一緒に込められていることを意味します。デフォルトでは画面の中央に表示されますが、「ヘッド」ビューの属性を変更することで変更できます。たとえば、app:layout_constraintVertical_bias="0.9"は、画面の90%を画面下に置きます。

More about chains (including diagrams) in the ConstraintLayout guidance here.

関連する問題