【发布时间】: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_horizontal。 -
@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