Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to extend a view's touch area

I have a vertical LinearLayout. It shall act as a quick jump bar. So the width is very small and the height matches nearly the whole screen height. When I touch it and move around inside, everything is fine. That means, my onTouchEvent() is called and I can get (and follow) the position of the finger. But since the bar is not very wide, the user can easily drift outside of that view. So it would be necessary to let the user continue the movement even when outside the view. In fact the same thing like a ListView does.

I don't know why a ListView's onTouchEvent() is called even when outside the ListView, but not in case of my LinearLayout. I tracked it down back to the dispatchTouchEvent(). Here the situation is the same that method is always called for the ListView (even when outside) but not in case of the LinearLayout (when moving outside).

I'd be very happy if someone could give me a hint. Thanks a lot!

Bernd

like image 325
Bernd Avatar asked Mar 12 '12 13:03

Bernd


2 Answers

You could use Android's TouchDelegate feature. It supports a bigger touch area for single views. Here is an example: https://stackoverflow.com/a/1343796/636579

like image 156
Tim Avatar answered Oct 17 '22 06:10

Tim


i think that you should try increasing the padding of a view from all sides so that when user will click near the view in area of padding the ontouch or onClick method will be called

android:padding="10dp"
like image 36
Mehroz Munir Avatar answered Oct 17 '22 06:10

Mehroz Munir