That is funny :-) Glad i could help.
On Thursday, November 1, 2012 1:32:19 AM UTC+2, Streets Of Boston wrote: > > Update: > > The weird 0x00100000 value is the value of *VERY_WIDE*, which is assigned > to the Layout's width if the *TextView*'s *mHorizontallyScrolling *field* > *is set to *true*. > > Calling *setHorizontallyScrolling(false)* or setting the * > android:scrollHorizontally="false"* attribute in your XML does the trick > as well :-) > > On Wednesday, October 31, 2012 7:11:33 PM UTC-4, Streets Of Boston wrote: >> >> Thanks Piren! >> >> Your answer led me into the right direction. >> >> This was the problem: >> >> The *ViewPager *contains *TextViews *as (grand-grand...) children. >> Before it actually starts scrolling it asks if the touched child (or one of >> the child's children) could scroll horizontally. If one of them does, the >> *ViewPager* won't scroll horizontally itself. Instead, it lets this >> child scroll. >> >> The *TextView* implements a method called '*canScrollHorizontally(int)*'. >> It uses the *mLayout *member to determine this method's return value. >> Sometimes, the *mLayout.mWidth* is 0x00100000 (= 1048576) and this >> weird value causes this *canScrollHorizontallly *method to incorrectly >> return *true *(instead of *false*). >> >> The method canScrollHorizontally is only available for API-level 14 or >> up... this may explain the issue... >> >> For now, I just subclass my *TextView* that appear in the *ViewPager *and >> override the *canScrollHorizontally *method, because I know the text in >> these *TextViews *can never scroll horizontally. >> >> public class MyTextView extends TextView { >> ... >> @Override >> public boolean canScrollHorizontally(int direction) { >> return false; >> } >> .... >> } >> >> On Wednesday, October 10, 2012 9:38:03 AM UTC-4, Piren wrote: >>> >>> The thing is that being Clickable shouldn't have any impact in this >>> scenario. Although a clickable view always consumes the touch event, in >>> ViewPager's case it should intercept it when it recognizes a drag gesture >>> (see its onInterceptTouchEvent implementation). >>> >>> You should override onTouch and onInterceptTouchEvent for all your >>> custom views and use logs to see how the events propagate through them (the >>> proper behavior would be the button intercepting onTouch and once your >>> finger moves enough in the X axes it should stop getting that event) >>> >>> My best guess is that the ViewPager cancels the drag because it believes >>> your views have horizontal scrolling - I didnt dig all the way through, but >>> it seems to be basing that mostly on child view sizes... since you said you >>> have custom layout logic, i'm thinking it makes the ViewPager return the >>> wrong result. try debugging ViewPager's canScroll method. >>> >>> they also have this comment in there: " // TODO: Add versioned support >>> here for transformed views. This will not work for transformed views in >>> Honeycomb+ ) " Kind of suspicious :) >>> >>> >>> On Tuesday, October 9, 2012 11:57:28 PM UTC+2, Streets Of Boston wrote: >>>> >>>> The targetSdk is 11. >>>> This is our hierarchy: >>>> >>>> -ViewPager >>>> | >>>> +-NoSaveStateFrameLayout >>>> | >>>> +-ProfileGridView >>>> | >>>> +-ProfileGridViewRow >>>> | >>>> +-FrameLayout >>>> | >>>> +-TextView >>>> >>>> Note that ProfileGridView contains one or more ProfileGridViewRows >>>> which contains one or more clickable TextView (i.e. our buttons). >>>> The ProfileGridView and ProfileGridViewRow are custom LinearyLayouts: >>>> The have their own measure and layout-logic. These two subclasses don't >>>> have any method or logic to capture or handle touch-events. >>>> >>>> Thanks! >>>> >>>> On Tuesday, October 9, 2012 11:31:03 AM UTC-4, Piren wrote: >>>>> >>>>> ViewPager is part of the support package and inherits from a ViewGroup >>>>> , it shouldn't matter much which OS version it runs on. >>>>> I have a similar setup and i dont experience this issue (using support >>>>> package v4, i assume you're using the same since you said you tested on >>>>> earlier os versions). >>>>> I can even press a button and see it switch to its pressed state and >>>>> then start a swipe without generating an onClick event. >>>>> >>>>> What is your targetSdkVersion? >>>>> >>>>> On Tuesday, October 9, 2012 4:27:31 PM UTC+2, Streets Of Boston wrote: >>>>>> >>>>>> Hi Kostya, >>>>>> >>>>>> Thanks for your answer. >>>>>> >>>>>> This bug (?) only happens on Jelly Bean (I don't have ICS devices to >>>>>> test it on). >>>>>> It works fine on Honeycomb and lower OS versions. >>>>>> >>>>>> It seems there is indeed a regression of the ViewPager in JB (and >>>>>> possibly ICS). >>>>>> >>>>>> Thanks. >>>>>> >>>>>> On Tuesday, October 2, 2012 12:47:41 PM UTC-4, Kostya Vasilyev wrote: >>>>>>> >>>>>>> Sounds like a bug in how ViewPager dispatches events (sorry for >>>>>>> stating the obvious). I'd consider looking at the source and comparing >>>>>>> it >>>>>>> to ScrollView (which handles nested touchable areas just fine). >>>>>>> >>>>>>> -- K >>>>>>> >>>>>>> 2012/10/2 Streets Of Boston <flying...@gmail.com> >>>>>>> >>>>>>>> Hi everyone, >>>>>>>> >>>>>>>> I have a ViewPager that contains pages, each page with a bunch of >>>>>>>> Buttons (or clickable TextViews). When I set the buttons to >>>>>>>> 'setClickable(false)', swiping the ViewPager to another page works >>>>>>>> fine all >>>>>>>> the time. >>>>>>>> >>>>>>>> However, when the buttons are clickable (OnClick listener is set), >>>>>>>> the ViewPager won't do anything if the user put his or her finger down >>>>>>>> on >>>>>>>> the button when he or she starts a swipe or scroll. If the user >>>>>>>> swipes, the >>>>>>>> button 'eats' all the touch-events (MotionEvents). >>>>>>>> >>>>>>>> Is there a convenient way to make these buttons/textviews clickable >>>>>>>> and make the ViewPager swipe even if the user puts his finger on a >>>>>>>> button >>>>>>>> initially? >>>>>>>> (I'd like to avoid hacks and using GestureDetectors if possible) >>>>>>>> >>>>>>>> Thanks! >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Android Developers" group. >>>>>>>> To post to this group, send email to >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/android-developers?hl=en >>>>>>> >>>>>>> >>>>>>> -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en