Material 没有标签的文本字段

Material Text fields without labels

在material.io里面有一段关于Text fields without labels,就会变成这样

当edittext位置为焦点时,label也为焦点。如何实现?因为我尝试使用单独的 textview,但是当 edittext 成为焦点时,标签也没有成为焦点

    <com.google.android.material.textview.MaterialTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/margin_16"
        android:text="Testing Label" />

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/outlinedTextField"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </com.google.android.material.textfield.TextInputLayout>

您可以在 TextInputEditText 上设置焦点更改侦听器并相应地更改标签颜色。

editText.setOnFocusChangeListener { v, hasFocus ->
    if (hasFocus)
        label.setTextColor(ContextCompat.getColor(context, R.color.colorPrimary))
    else
        label.setTextColor(ContextCompat.getColor(context, R.color.defaultColor))
}

使用:

outlinedTextInputLayout.getEditText().setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus)
            label.setTextColor(ContextCompat.getColor(context, R.color.xxxx));
        else
            label.setTextColor(ContextCompat.getColor(context, R.color.xxxx));
    }
});