web-dev-qa-db-ja.com

ConstraintLayoutコンテンツをAndroid Studio?

私はAndroid Studioを使い始めて、ConstraintLayoutのコンテンツを垂直方向にセンタリングしようとしていますが、成功していません。Android:gravity="center"と私はapp:layout_editor_absoluteYすべての要素のうち、発生しません...では、どうすればこれを一元化できますか?

<?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>
10
Igor

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%を下に移動します。

ConstraintLayoutガイダンスのチェーン(図を含む)の詳細はこちら

20
Lewis McGeary