【问题标题】:How to set different gravity for TextInputLayout's hint and text in Android如何在Android中为TextInputLayout的提示和文本设置不同的重力
【发布时间】:2018-10-06 17:40:25
【问题描述】:

如何为 TextInputLayout 的提示和编辑文本中输入的文本设置不同的重力。我想将提示重力设置为开始并将文本的文本重力编辑为中心。那么我怎样才能做到这一点。 这是我的xml代码,

              <android.support.design.widget.TextInputLayout
                        android:id="@+id/email"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:padding="16dp"
                        android:gravity="start">

                        <EditText
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:backgroundTint="@color/grey"
                            android:hint="Email"
                            />
                    </android.support.design.widget.TextInputLayout>

【问题讨论】:

  • 为什么在 textInputLayout 和 Edittext 中都给出提示?我认为,你应该只提供edittext。它也一样。
  • 你我已经删除了
  • 提示仅用于编辑文本。
  • 给,edittext重力中心请显示我下面的代码。
  • 浮动提示的对齐是在将EditText 添加到TextInputLayout 时确定的,在这种情况下,这将在膨胀期间发生。要为EditText 设置不同的重力,请不要在布局中设置任何gravity 属性,然后在代码中以编程方式设置EditText 的重力。也就是setContentView()之后,使用findViewById()得到EditText,然后调用setGravity(Gravity.CENTER_HORIZONTAL)就可以了。

标签: android android-edittext gravity android-textinputlayout


【解决方案1】:

在 Android 中,我们可以通过编程方式和 XML 设置重力。
要在中心设置编辑文本提示,请参见下面我在 XML 中使用 android:gravity="center" 的代码。

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:backgroundTint="@color/colorAccent"
    android:hint="Email" />

要在左上角显示提示,并且在编辑文本中键入的文本居中,或者在 Android 中为 TextInputLayout 的提示和文本设置不同的重力,您需要尝试下面的代码。

在.xml中你需要设置EditText的提示重力top|left

<android.support.design.widget.TextInputLayout
    android:id="@+id/email"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp">

    <EditText
        android:id="@+id/etName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top|left"
        android:hint="Email"
        android:backgroundTint="@color/colorAccent" />
</android.support.design.widget.TextInputLayout>

并在您的 java(活动)文件中,以编程方式设置 EditText 的文本重心:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    EditText etName = (EditText)findViewById(R.id.etName);
    etName.setGravity(Gravity.CENTER);
}

查看结果截图:

【讨论】:

  • 请阅读想要为编辑文本的提示和正在输入的文本设置不同的重力的问题
  • 你好@sharath,请显示我编辑的答案。它会帮助你。
  • @sharath 你能试试这个吗??
  • 你好@sharath 我的代码对你有用吗??如果是,请接受我的回答,如果您有任何疑问,请随时问我
  • 2019 年 7 月也为 Material 的 TextInputLayoutTextInputEditText 工作
【解决方案2】:

不同的重力适用于implementation 'com.google.android.material:material:1.1.0' 及以下版本,但不适用于1.2.0 或以上版本。 要使其在1.1.0 或以下工作,请按照以下步骤操作。

  1. 设置TextInputEditText重力以xml开始

    &lt;com.google.android.material.textfield.TextInputEditText id="@+id/text" gravity="start"/&gt;

  2. 然后以编程方式将其重心设置为中心

    text.gravity=Gravity.CENTER

【讨论】:

    猜你喜欢
    • 2017-09-25
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2021-09-15
    • 2014-06-30
    相关资源
    最近更新 更多