【问题标题】:How to implement on one method of TextWatcher in android?如何在android中实现TextWatcher的一种方法?
【发布时间】:2017-04-19 10:59:34
【问题描述】:

我有一个应用程序,其中有很多编辑文本,但在某些编辑文本中,我只想实现 TextWatcher 的一种方法。我该怎么做,请指导。

代码:-

private TextWatcher m_textWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        isFieldsEmpty();
    }

    @Override
    public void afterTextChanged(Editable s) {
        m_mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int heightDiff = m_mainLayout.getRootView().getHeight() - m_mainLayout.getHeight();
                if (!(heightDiff > RewardUtil.dpToPx(mContext, 200))) { // if more than 200 dp, it's probably a keyboard...
                    m_otpEditText.clearFocus();
                }
            }
        });
    }
};
 m_otpEditText.addTextChangedListener(m_textWatcher);

【问题讨论】:

  • 您需要对多个编辑文本中的文本更改执行操作吗?
  • 不,我只需要实现 textwatcher 的一种方法,而不是整体

标签: android android-textwatcher


【解决方案1】:

像这样创建方法。

   public static class MyTextWatcher implements TextWatcher {

        private EditText mEditText;

        public MyTextWatcher(EditText editText) {
            mEditText = editText;
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            oldText = mEditText.toString();
        }
        ....
    }

然后像这样使用...

  m_otpEditText.addTextChangedListener(new MyTextWatcher(mFirstEditText));

它会帮助你。 谢谢。

【讨论】:

    【解决方案2】:

    首先,你可以如下创建一个类:

    public class CustomTextWatcher implements TextWatcher {
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
    
        }
    }
    

    此后,只需覆盖您需要的方法。假设你只需要 onTextChanged 方法,那么你可以这样做:

    m_otpEditText.addTextChangedListener(new CustomTextWatcher() {
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
            });
    

    【讨论】:

      【解决方案3】:

      TextWatcher 类使您可以灵活地覆盖任何您需要的方法。如果你真的只需要一种方法,那么只覆盖一种,但你必须始终实现所有方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 2020-10-06
        • 2023-03-24
        • 1970-01-01
        相关资源
        最近更新 更多