首页 > 解决方案 > InputTextEdiText 中的 setBoxBackgroundMode 为 NONE 不会删除下划线

问题描述

我将我的 TextInputEditText 用作 TextView 和 TextInputEditText。一个开关决定 TextInputEditText 应该扮演什么角色。在初始加载时,EditText 没有下划线,当 Role 翻转为 EditText 时,添加了下划线。在重新翻转时,下划线对 Textview 的作用仍然存在,而我希望它恢复到初始状态,下面是我正在做的一个小动画。

在此处输入图像描述 这是我的 XML 的样子:

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/inl_miniuserinfo_paypal"
                    style="@style/profile_inputtext"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <com.google.android.material.textfield.TextInputEditText
                        android:id="@+id/et_miniuserinfo_paypal"
                        style="@style/profile_textInputEditext"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </com.google.android.material.textfield.TextInputLayout>

对应的styles.xml:

 <style name="profile_inputtext">
        <item name="boxStrokeColor">@null</item>
        <item name="android:layout_marginStart">@dimen/normalPadding</item>
        <item name="boxStrokeWidth">0dp</item>
    </style>

    <style name="profile_textInputEditext">
        <item name="android:padding">0dp</item>
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:enabled">false</item>
        <item name="android:background">@color/colorSurface</item>
        <item name="fontFamily">@font/proximanovaregular</item>
        <item name="android:textSize">@dimen/textsize_small</item>
        <item name="android:text">@string/not_available</item>

    </style>

我翻转角色的代码是:

private void loadData() {
        binding.isMiniuserinfo.setCheckedChangeListener(current -> {
            switch (current)
            {
                case LEFT:
                    activateAllEditText();
                    break;
                case RIGHT:
                    if (binding.inlMiniuserinfoPaypal.isErrorEnabled() )
                    disableAllEditText();
                    saveChanges();
                    break;
            }
        });
    }

 private void disableAllEditText() {
        binding.etMiniuserinfoBio.setEnabled(false);
        binding.etMiniuserinfoEmail.setEnabled(false);
        binding.etMiniuserinfoLocation.setEnabled(false);
        binding.etMiniuserinfoPaypal.setEnabled(false);

        binding.inlMiniuserinfoBio.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_NONE);
        binding.inlMiniuserinfoEmail.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_NONE);
        binding.inlMiniuserinfoLocation.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_NONE);
        binding.inlMiniuserinfoPaypal.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_NONE);

    }

    private void activateAllEditText() {
        //inl==InputTextEditText
        binding.etMiniuserinfoBio.setEnabled(true);
        binding.etMiniuserinfoEmail.setEnabled(true);
        binding.etMiniuserinfoLocation.setEnabled(true);
        binding.etMiniuserinfoPaypal.setEnabled(true);


        //inl==InputTextLayout
        binding.inlMiniuserinfoBio.setBoxStrokeWidth(2);
        binding.inlMiniuserinfoEmail.setBoxStrokeWidth(2);
        binding.inlMiniuserinfoLocation.setBoxStrokeWidth(2);
        binding.inlMiniuserinfoPaypal.setBoxStrokeWidth(2);
    }

所以你现在就会明白这个问题了,我需要我的 InputTextLayout 在从左到右切换后不要画下划线。

标签: androidandroid-edittextmaterial-components-androidandroid-textinputlayoutandroid-textinputedittext

解决方案


推荐阅读