установить OnFocusChangeListener для большего количества editTexts во фрагменте - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу установить автоматическую прокрутку для каждого EditText (VerifiedEditText в моем случае), который у меня есть.Я сделал это таким образом, но я не думаю, что это так, как нужно (выглядит слишком сложно, грязно и слишком долго), не могли бы вы порекомендовать мне сделать это в любом случае проще?Я все еще учусь сам, поэтому объяснение приложенному коду было бы очень полезно.Спасибо

@Override
public void onFocusScroll() {

final ScrollView mScrollView;    
mScrollView = (ScrollView) rootView.findViewById(R.id.register_scroll);

        final VerifiedEditText editText0 = (VerifiedEditText) rootView.findViewById(R.id.register_ticket);
        final VerifiedEditText editText1 = (VerifiedEditText) rootView.findViewById(R.id.register_sektor);
        final VerifiedEditText editText2 = (VerifiedEditText) rootView.findViewById(R.id.register_row);
        final VerifiedEditText editText3 = (VerifiedEditText) rootView.findViewById(R.id.register_seat);

        editText0.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    mScrollView.post(new Runnable() {
                        public void run() {
                            mScrollView.smoothScrollTo(0, mScrollView.getTop());
                        }
                    });
                }
            }
        });

        editText1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    mScrollView.post(new Runnable() {
                        @Override
                        public void run() {
                            mScrollView.smoothScrollTo(0, mScrollView.getBottom());
                        }
                    });
                }
            }
        });

        editText2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    mScrollView.post(new Runnable() {
                        @Override
                        public void run() {
                            mScrollView.smoothScrollTo(0, mScrollView.getBottom());
                        }
                    });
                }
            }
        });

        editText3.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    mScrollView.post(new Runnable() {
                        @Override
                        public void run() {
                            mScrollView.smoothScrollTo(0, mScrollView.getBottom());
                        }
                    });
                }
            }
        });
    }

1 Ответ

0 голосов
/ 03 декабря 2018
     implement class by `View.OnFocusChangeListener`

и установите Focus Listener на текущий экземпляр класса, потому что трактуйте как View.OnFocusChangeListener instnace и Override onFocusChange() medthod

v.getTop() возвращают верхнюю позицию текущего сфокусированного вида

 editText0.setOnFocusChangeListener(this);
 editText1.setOnFocusChangeListener(this);
 editText2.setOnFocusChangeListener(this);
 editText3.setOnFocusChangeListener(this);




            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {

                    mScrollView.post(new Runnable() {
                        public void run() {
                            mScrollView.smoothScrollTo(0, v.getTop());
                        }
                    });




}
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...