web-dev-qa-db-ja.com

制約レイアウトボタンのテキストの中央揃え

新しいConstraintレイアウトを使用してレイアウトを作成しています。画面幅のほぼ全体を占めるButtonが必要であり、制約を使用すると簡単です。

enter image description here

画像でわかるように、幅を0dp(任意のサイズ)に設定していますが、ボタンテキストの通常の通常のテキストが中央に貼り付けられません。

私が試した:-重力を中心に設定-textAlignmentを中心に設定

このプロパティは0dp width(任意のサイズ)では機能しないようです。

そこで、重心を使って幅をmatch_parentに設定してみました。

enter image description here

少し右側です。

誰かがその動作を修正する方法を知っていますか?

Alpha4を使用していることに注意してください

compile 'com.Android.support.constraint:constraint-layout:1.0.0-alpha4'

XMLコード

<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:id="@+id/content_login"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    tools:context="br.com.marmotex.ui.LoginActivityFragment"
    tools:showIn="@layout/activity_login">

    <Button
        Android:text="Log in"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:id="@+id/btLogin"
        Android:layout_marginTop="48dp"
        app:layout_constraintTop_toBottomOf="@+id/textView6"
        Android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="@+id/content_login"
        Android:layout_marginRight="16dp"
        Android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="@+id/content_login"
        Android:layout_marginLeft="16dp"
        Android:textColor="@Android:color/white"
        Android:background="@color/BackgroundColor" />

</Android.support.constraint.ConstraintLayout>

[〜#〜] edit [〜#〜]ConstraintLayoutalpha4のバグでした。

[〜#〜] update [〜#〜]Googleがリリースしましたalpha5、上記のコードが機能するようになりました。 リリースノート

5

やってみました ?

Android:textAlignment="center"

これは私にとってはうまくいきます。

4
SoH

これはバグです。ただし、LinearLayout(または他の標準のViewGroup)内にボタンを配置することで回避できます。親ビューとボタンの幅をmatch_parentに設定し、ボタンに設定した制約を親レイアウトに移動します。

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="@+id/parent_left"
    app:layout_constraintTop_toTopOf="@+id/parent_top"
    app:layout_constraintRight_toRightOf="@+id/parent_right">

    <Button
        Android:id="@+id/test"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="Centered Text"/>

</LinearLayout>
0
Hobo Joe

これらの制約があるためだと思いますapp:layout_constraintRight_toRightOf app:layout_constraintLeft_toLeftOf

現在のボタンを次のボタンに置​​き換えます。

    <Button
    Android:text="Log in"
    Android:layout_width="match_parent"
    Android:layout_height="48dp"
    Android:id="@+id/btLogin"
    Android:textColor="@Android:color/white"
    Android:background="@color/BackgroundColor"
    Android:gravity="center"
    Android:textAlignment="center"
    Android:layout_marginTop="100dp"
    tools:layout_editor_absoluteX="-1dp"
    app:layout_constraintTop_toBottomOf="@+id/textView6" />

これがお役に立てば幸いです。

0