【问题标题】:EditText TextInputLayout Hint text alignment: Is there a way to align hint text like textAlignment property of EditText viewEditText TextInputLayout 提示文本对齐:有没有办法像 EditText 视图的 textAlignment 属性一样对齐提示文本
【发布时间】:2020-12-09 22:28:48
【问题描述】:

我有一个固定高度的 inputText 字段(TextInputLayout 的 EditText)。 我想将提示文本对齐到视图的左上角。

问题:提示文本总是显示在 center_verticle 但我想显示在左上角。

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/aboutWrapper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="About Sponsor">
            <EditText
                android:id="@+id/et_about_sponsor"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:minHeight="250dp"
                android:textAlignment="viewStart"
                android:layout_centerHorizontal="true"
                android:gravity="start|top"
                android:imeOptions="actionDone"
                android:inputType="textMultiLine|textCapSentences"
                android:textColor="@color/white"
                android:textColorHint="@color/white"
                android:textSize="@dimen/font_medium" /> 
         </com.google.android.material.textfield.TextInputLayout>

【问题讨论】:

  • 我试了你的代码,文字显示在左上角
  • 使用 TextInputLayout
  • 尝试在editText里面放这个:android:hint="hello" 你会看到结果
  • @KKKKK 你把文本和提示混淆了……我需要提示对齐
  • @GabrieleMariotti 我已经尝试过 TextInputLayout 但无法找到解决方案......你能举一些工作解决方案的例子吗..

标签: android android-edittext android-textinputlayout hint


【解决方案1】:

根据github issue,您需要将 android:minLinesandroid:gravity="top" 一起设置为至少 2。

<com.google.android.material.textfield.TextInputLayout
 android:id="@+id/txtInput"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:hint="Hint">

 <com.google.android.material.textfield.TextInputEditText
     android:id="@+id/et_content"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="top"
     **android:minLines="2"**
      />
</com.google.android.material.textfield.TextInputLayout>

【讨论】:

    【解决方案2】:

    你可以使用:

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="About Sponsor">
    
                <com.google.android.material.textfield.TextInputEditText
                    android:minHeight="250dp"
                    android:textAlignment="viewStart"
                    android:layout_centerHorizontal="true"
                    android:gravity="start|top"
                    android:imeOptions="actionDone"
                    android:inputType="textMultiLine|textCapSentences"
                    .../>
            </com.google.android.material.textfield.TextInputLayout>
    

    【讨论】:

    • idk 为什么......但它对我的行为不一样......虽然我使用相同的属性
    • @MuahmmadTayyib 您在您的应用程序中使用MaterialComponents 主题吗?我也使用TextInputEditText 而不是EditText
    【解决方案3】:

    尝试将style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" 样式添加到TextInputLayout

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/aboutWrapper"
        android:layout_width="match_parent"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_height="wrap_content"
        android:hint="About Sponsor">
        <EditText
            android:id="@+id/et_about_sponsor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="250dp"
            android:textAlignment="viewStart"
            android:layout_centerHorizontal="true"
            android:gravity="start|top"
            android:imeOptions="actionDone"
            android:inputType="textMultiLine|textCapSentences"
            android:textColor="@color/white"
            android:textColorHint="@color/white"
            android:textSize="@dimen/font_medium" />
    </com.google.android.material.textfield.TextInputLayout>
    

    【讨论】:

      【解决方案4】:

      你可以使用

      <EditText
                  android:id="@+id/editTextTextPersonName5"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="1"
                  android:ems="10"
                  android:hint="Message"
                  android:gravity="left|top"
                  android:inputType="textAutoComplete"
                  android:textAlignment="textStart" />
      

      这里的gravity 属性将有助于将文本对齐到您想要的任何位置。 可以参考Here

      【讨论】:

        猜你喜欢
        • 2019-02-19
        • 2013-05-22
        • 2014-05-25
        • 2017-06-19
        • 1970-01-01
        • 2011-09-06
        • 2015-06-18
        • 1970-01-01
        • 2021-03-08
        相关资源
        最近更新 更多