android - 聚焦后更改 TextInputLayout 提示文本

标签 android android-fragments android-textinputlayout

在一个 fragment 中,我想在用户触摸 TextInputEditText 后更改 TextInputLayout 提示文本。在它动画到 float 提示之前。

我可以更改提示没问题,但我希望用户先触摸它,然后再更改它。

我怎样才能做到这一点?

谢谢

最佳答案

更改提示文本颜色 使用 View.OnFocusChangeListener设置hintTextAppearance .试试下面的配置。

 <style name="inactive" parent="Theme.AppCompat.Light">
    <item name="android:textColorPrimary">@android:color/darker_gray</item>
    <item name="android:textColor">@android:color/darker_gray</item>
</style>

<style name="active" parent="Theme.AppCompat.Light">
    <item name="android:textColorPrimary">@android:color/black</item>
    <item name="android:textColor">@android:color/black</item>
</style>

XML
<android.support.design.widget.TextInputLayout
    android:id="@+id/tet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et"
    app:hintTextAppearance="@style/inactive"
    android:layout_margin="@dimen/activity_horizontal_margin"
    app:hintEnabled="true">
    <android.support.design.widget.TextInputEditText
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:textColor="@color/colorPrimary"
        android:layout_height="wrap_content"
        android:hint="Floating Hint" />

</android.support.design.widget.TextInputLayout>

在焦点更改期间更改样式。
final TextInputLayout inputLayout=findViewById(R.id.tet);
    final TextInputEditText edit=findViewById(R.id.edit);
    edit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus)
                inputLayout.setHintTextAppearance(R.style.active);
            else
                inputLayout.setHintTextAppearance(R.style.inactive);
        }
    });

编辑 :- 要更改提示文本,您可以在焦点更改时更改它。
edit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus)
                edit.setHint("Enter name");
            else
                edit.setHint("Name");
        }
    });

关于android - 聚焦后更改 TextInputLayout 提示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50421247/

相关文章:

android - 使用游标填充后将项目添加到 ListView

android - FragmentPagerAdapter 的问题

android - 新 com.google.android.material.textfield.TextInputEditText 的全局样式

Android:带有附加参数的onClick回调?

安卓 Facebook Intent

Android: View 在调用setContentView R.layout之前显示

java - 窗口回调 onMenuOpened 和 onPanelClosed 用于随工具栏膨胀的菜单

java - 如何从新 Activity 返回主抽屉导航 Activity

android - 更改 TextInputLayout 提示字体

android - TextInputLayout setErrorEnabled 不创建新的 TextView 对象