不关注时显示 TextInputEditText 的标签

Show label of TextInputEditText when not focused on this

我有一个包含两个 TextInputEditText 的布局,当我在此(以编程方式或使用 xml)上设置文本并将焦点设置在另一个 TextInputEditText 上时,上面的标签 TextInputEditText 被隐藏了。 我想显示这个标签,即使是在其中写了一段文字。

我的xml代码:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="match_parent"
android:orientation="vertical"
android:background="@color/whiteGray2">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginRight="5dp"
    android:layout_marginLeft="5dp"
    android:orientation="horizontal"
    android:weightSum="2"
    android:layout_marginBottom="10dp"
    android:layout_marginTop="10dp">
    <com.google.android.material.textfield.TextInputLayout
        style="@style/CustomBorderTextInputEditText"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:hint="@string/oldCount"
        app:hintTextColor="@color/gray_text">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/input_address"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textIsSelectable="true"
            android:inputType="none"
            android:imeOptions="actionNext"
            android:text="Hi How are you"
            android:textColor="@color/gray_text"
            android:textColorHint="@color/gray_text" />

    </com.google.android.material.textfield.TextInputLayout>
    <com.google.android.material.textfield.TextInputLayout
        style="@style/CustomBorderTextInputEditText"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:hint="@string/newCount">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/newCount"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="1"
            android:textColorHint="@color/gray_text"
            android:hint="@string/newCount"
            android:textColor="@color/gray_text"
            android:inputType="number"/>

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

</LinearLayout>

我的风格:

 <style name="CustomBorderTextInputEditText" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
    <item name="hintTextColor">?attr/colorPrimary</item>
</style>

将其添加到您的 xml 代码中:

android:focusableInTouchMode="true"

将其添加到您的 java 代码中:

 EditText newCount = (EditText)findViewById(R.id.newCount);
 newCount.setFocusable(true);

说不定对你有用,试试吧

我找到了答案。我应该添加 textColorHint 并设置颜色而不是添加 hintTextColor 属性。但是现在我很困惑,它们之间有什么区别?

您的问题在这里:

    <com.google.android.material.textfield.TextInputEditText
        android:textColorHint="@color/gray_text"

删除TextInputEditText中的android:textColorHint并使用:

<com.google.android.material.textfield.TextInputLayout
      app:hintTextColor="@color/colorSecondary"
      android:textColorHint="@color/text_input_hint_selector"

hintTextColor 是标签折叠且文本字段处于活动状态时的颜色。

android:textColorHint是标签在所有其他文本字段状态(例如静止和禁用)下的颜色。

举个例子:

这是选择器:

这里是TextInputLayout:

没有文字:

重点:

文本未聚焦:

已禁用: