Android:如何默认显示TextInputLayout的后缀文本?

snvhrwxg  于 2022-12-02  发布在  Android
关注(0)|答案(3)|浏览(215)

我使用的是最新版本的android材质设计库(1.2.0-alpha 05)。我在TextInputLayout中添加了app:suffixText=“PlaceHolder”。我希望默认情况下显示suffixText,但目前只有在TextInputLayout获得焦点时才能看到它。当TextInputLayout失去焦点时,我看不到suffixText。下面是我的代码-:

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
app:suffixText="PlaceHolder"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:hint="hint">

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

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

请让我知道,我如何显示默认后缀文本。

w1e3prcc

w1e3prcc1#

当文本字段为空时,也可以使用**app:expandedHintEnabled="false"**显示后缀/前缀。

<com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:suffixText="...."
            app:expandedHintEnabled="false"
            >

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

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

wn9m85ua

wn9m85ua2#

在代码中

inputLayout.suffixTextView.visibility = View.VISIBLE
inputLayout.addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
    inputLayout.suffixTextView.visibility = View.VISIBLE
}
1szpjjfi

1szpjjfi3#

我刚刚在Kotlin中创建了一个扩展:

fun TextInputLayout.keepSuffixVisible() {
    val suffixParent = this.suffixTextView.parent as View
    suffixParent.viewTreeObserver.addOnGlobalLayoutListener {
        if (suffixParent.visibility != View.VISIBLE) {
            suffixParent.visibility = View.VISIBLE
        }
    }
    this.suffixTextView.viewTreeObserver.addOnGlobalLayoutListener {
        if (this.suffixTextView.visibility != View.VISIBLE) {
            this.suffixTextView.visibility = View.VISIBLE
        }
    }
    this.suffixTextView.visibility = View.VISIBLE
}

相关问题