Stack Overflow на русском Asked by AlexSrc on February 14, 2021
**
**
Привет всем, возникла проблема с обработкой нажатия вне границ LinearLayout (обозначу LinearLayout(1)). Есть SrollView, в котором хранится множество LinearLayout, обработка нажатия которых реализовано с помощью onClick (если воспользоваться onTouch, то он будет реагировать на нажатие перед прокруткой)
После нажатия на любой из LinearLayout(1), то затемняется фон и вылазит окно LinearLayout(2)
**
Вот тут и начинается вся суть, я обрабатываю нажатие вне окна LinearLayout(2) этим кодом:
findViewById(R.id.frame).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent event) {
findViewById(R.id.frame).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Rect rect = new Rect();
bell_settings.getHitRect(rect);
if (!rect.contains((int) event.getX(), (int) event.getY())) {
SetAlpha(setting_msg, 500, 0, true, setting_msg.getAlpha(), 0);
((EditText) findViewById(R.id.message)).setEnabled(false);
AnimationTranslation(setting_msg, "translationX", width, 500 );
}
return true;
}
}
}
setting_msg – LinearLayout(2)
frame – родительский LinearLayout в котором хранятся все объекты
Когда я пытаюсь на эмуляторе нажать на место вне окна, то обрабатывается нажатие на LinearLayout(1), вместо нажатия на frame
Как мне сделать так, чтобы можно было обработать нажатие вне окна, вместо нажатие на LinearLayout(1)?
У вас по сути есть 2 варианта:
Вы можете при открытии вашего layout сменять действие клик listener-a layout-a который внизу, чтоб он обрабатывал не клики, а закрытия, а после закрытия возвращать ему старый клик listener.
Второй вариант это добавить под layout который появляется поверх вашего основного layout-а еще один прозрачный layout, который и будет обрабатывать закрытие.
Ну или вообще можно создать отдельную Activity с прозрачным фоном и непрозрачным layout-ом. Но по сути все равно все сведется ко второму варианту.
Correct answer by Sergei Buvaka on February 14, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP