无法以编程方式更改TextInputLayout提示重力

问题描述 投票:1回答:2

XML#1-TextInputLayout中的TextInputEditText:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/textInputLayout"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="0dp"
    android:layout_height="148dp"
    android:hint="Enter your email"
    app:boxStrokeColor="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/inputTextField"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="start|center_vertical" />

</com.google.android.material.textfield.TextInputLayout>

XML#2-仅是一个简单的TextInputEditText(未包装在TextInputLayout中):

<com.google.android.material.textfield.TextInputEditText
    android:id="@+id/inputTextField"
    android:layout_width="0dp"
    android:layout_height="200dp"
    android:hint="Password"
    android:gravity="top"
    android:ellipsize="end"
    android:inputType="textMultiLine"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

我要做的就是将TextInputLayout中的提示的重力更改为start | top 以编程方式

“以编程方式”部分很重要,因为我针对需要不同提示文本位置的多个用例重用了此TextInputLayout + TextInputEditText。

对于XML#1,由于以下两行不起作用,因此提示保留在那里:

活动代码:

    inputTextField.gravity = Gravity.START or Gravity.TOP
    textInputLayout.gravity = Gravity.START or Gravity.TOP

在XML#2的情况下,它可以完美地工作,并且提示移到顶部:

活动代码:

    inputTextField.gravity = Gravity.START or Gravity.TOP

为什么提示不针对XML#1以编程方式移动?

所需结果:

Desired result

android android-layout android-textinputlayout material-components textinputlayout
2个回答
0
投票

我认为您应该这样使用它:


0
投票

在布局中,您可以在android:gravity="top"中使用TextInputEditText

© www.soinside.com 2019 - 2024. All rights reserved.