【问题标题】:TextInputEditText, how can align hint to the top marginTextInputEditText,如何将提示对齐到上边距
【发布时间】:2020-03-16 20:45:18
【问题描述】:

如果我使用最后一个材质库版本 com.google.android.material:material:1.2.0-alpha02 .. 我设置了 5 行可滚动的 textInputEditText,我想显示提示消息与该文本输入的上边距对齐。在布局编辑器上出现在正确的位置,但是当我运行应用程序时,位置是垂直居中的。为什么?

相反,我没有遇到 com.google.android.material:material:1.1.0-beta02

的问题

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    android:id="@+id/sendMailContainer"
    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="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <TextView
            android:id="@+id/popupTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="20dp"
            android:layout_marginTop="20dp"
            android:text="@string/sendBusinessCard"
            android:textColor="@android:color/black"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/subTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/sendBusinessCard"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:layout_below="@+id/popupTitle"
            android:layout_marginEnd="40dp"
            android:layout_marginStart="40dp"
            android:layout_marginTop="20dp"/>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/noteMessageContainer"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/subTitle"
            android:layout_marginEnd="40dp"
            android:layout_marginStart="40dp"
            android:layout_marginTop="10dp">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/noteMessage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/emailText"
                android:inputType="text|textMultiLine|textCapSentences"
                android:textColor="@android:color/black"
                android:textColorHint="@color/gray9B"
                android:textSize="16sp"
                android:isScrollContainer="true"
                android:scrollbars="vertical"
                android:textIsSelectable="true"
                android:minLines="5"
                android:maxLines="5"
                android:gravity="top"/>

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

        <Button
            android:id="@+id/notePopupLeftButton"
            android:layout_width="180dp"
            android:layout_height="35dp"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/noteMessageContainer"
            android:layout_marginBottom="20dp"
            android:layout_marginStart="20dp"
            android:layout_marginTop="40dp"
            android:background="#FF515151"
            android:text="@string/Cancel"
            android:textAllCaps="true"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/notePopupRightButton"
            android:layout_width="180dp"
            android:layout_height="35dp"
            android:layout_alignParentEnd="true"
            android:layout_below="@+id/noteMessageContainer"
            android:layout_marginBottom="20dp"
            android:layout_marginEnd="20dp"
            android:layout_marginTop="40dp"
            android:background="#FF515151"
            android:text="@string/Send"
            android:textAllCaps="true"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="bold" />

    </RelativeLayout>
</ScrollView>

这是两张截图,一张是布局编辑器,提示位置正确,另一张是应用截图:

在此输入代码

【问题讨论】:

  • material:1.2.0-alpha02,我试过 android:gravity="top|start" 但没有用。 material:1.2.0-alpha01, android:gravity="top" 足以让它工作。我不知道发生了什么
  • 应该和1.2.0-alpha02版本引入的这个commit有关:[TextInputLayout] 增加对折叠标签位置的支持,通过编辑文本gravity,例如 center_horizo​​ntal。
  • @GabrieleMariotti 你认为是错误还是某种功能? o.O
  • @aeroxr1 不确定。在大多数情况下,TextInputLayout 仅使用 1 行,并且不会影响这种情况。在您的情况下遵循材料指南,它应该垂直居中。
  • @GabrieleMariotti 在材料指南中写道,我们应该使用文本区域来进行多行编辑文本。但是我可以通过什么方式在不使用 TextInputEditText 的情况下创建材料设计 textArea ? material.io/components/text-fields/#input-types

标签: android android-layout android-textinputlayout material-components-android android-textinputedittext


【解决方案1】:

在您的 EditText / TextInputEditText 中添加此代码:

android:gravity="top|start"

【讨论】:

    【解决方案2】:

    你可以使用

    android:gravity="top|start" 
    

    地址块的 EditText 中的属性,它应充当容器的底层控制属性并将提示带到左上角。

    【讨论】:

    • 你试过 1.2.0-alpha02 吗?
    【解决方案3】:

    android:gravity="top|start" 添加到布局 XML 文件中的 EditText。

    【讨论】:

    • 你试过 1.2.0-alpha02 吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2016-12-09
    • 2019-03-02
    • 2017-04-18
    • 1970-01-01
    相关资源
    最近更新 更多