2012-05-18 1 views
1

У меня есть выдвижной ящик, расположенный внизу. и ниже, у меня есть линейная компоновка 50dp.скользящий выдвижной ящик с содержимым под ним

Так что мой макет выглядит следующим образом:

enter image description here

Где красный прямоугольник скользящего ящик ручка

Теперь, когда я скольжу мой палец из нижней части экрана для скольжения ящика, т.е. вдоль синий путь

enter image description here

скользящий ящик Безразлично» t открыто. Он не открывается, потому что активность щелчка фиксируется нижней компоновкой. Скользящий выдвижной ящик открывается только тогда, когда я нажимаю ТОЧНО в красный прямоугольник.

Я пробовал сделать нижний макет clickable => false focussable => false все еще не хорошо.

Любая идея о том, как я могу сделать событие щелчка нижнего макета потерять свой щелчок, как только палец выходит из макета? , так что ручка может захватить щелчок

+0

Не думайте, что что-нибудь может вам помочь, вам нужно как можно щелкнуть справа. Тогда лучше, вы отрегулируете размер красного прямоугольника. есть некоторые события, но его касается касания, а не щелчка. i.e ondispatchtouchevent(). –

+0

Мне не нужен нижний слой clcikable .. так как я всегда могу использовать относительный макет/framelayout и поместить кнопку отдельно. –

+0

настройка heght не работает .. потому что нет пользователя, который нажимал бы на дескриптор, даже если он равен 100dp, поскольку все слайды снизу –

ответ

2

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

Или, альтернативно, вы можете использовать FrameLayout для представления LinearLayout и вида выдвижного ящика, как в одном макете, и установить ширину и высоту вашего ящика как линейную компоновку - охватывая всю область линейного макета.

Или, наконец, реализовать SimpleOnGestureListener on linearlayout (для направления вверх), чтобы выполнить действие щелчка ящика.

+0

, но в этом случае нижняя панель также будет переместитесь вверх, который я не хочу –

+0

см. мой обновленный ответ, а затем, возможно, вам нужно реализовать слушателя SimpleOnGestureListener на вашем линейном макете, чтобы эмулировать действие clicker click click. – waqaslam

+0

Yup Я имел это в виду как последний вариант .. :) Спасибо –

0

Вы сказали, что попробовали clickable = false и focusable = false ... Вы также установили focusableintouchmode = false? (Я бы поставил все три и посмотрю, что произойдет).

Как я недавно обнаружил, что focusable-false охватывает только аппаратные средства, а не сенсорный экран. Мне пришлось добавить focusableintouchmode = "false" .. возможно, это тоже сработает для вас.

+0

не работает :( –