I have a LinearLayout with some nested LinearLayouts, ImageView’s and TextViews. One of the TextView’s have scroll bars. I have the onTouchEvent() method overriden in my LinearLayout class but when you touch the TextView with the scroll bar nothing registers.
Here is my xml file (the TextView in question is the last item in this layout):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:orientation="vertical"
android:minWidth="310dp"
android:layout_width="fill_parent">
<LinearLayout
android:id="@+id/from_linear_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="left">
<ImageView
android:src="@drawable/ic_dialog_info"
android:id="@+id/notification_type_icon_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:scaleType="center"
android:layout_margin="4dp"/>
<TextView
android:id="@+id/time_text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Timestamp"
android:textAppearance="?android:attr/textAppearanceSmall"
android:padding="1dp"
android:textColorLink="?android:attr/textColorPrimaryDisableOnly"/>
</LinearLayout>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/under_contact_image_view"
android:src="@drawable/divider_horizontal_dark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingBottom="2dp"
android:paddingTop="2dp" />
<TextView
android:text="Notification Text"
android:id="@+id/notification_text_view"
android:autoLink="all"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorPrimaryDisableOnly"
android:layout_width="fill_parent"
android:gravity="left"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:textColorLink="?android:attr/textColorPrimaryDisableOnly"
android:layout_gravity="left"
android:layout_height="70dip"
android:scrollbars="vertical"/>
</LinearLayout>
Any thoughts on this and if so, does anyone know how to overcome this so that I can implement a touch event on this TextView?
I hate to answer my own question but I finally figured this one out. Basically, you must intercept the touch events that the Activity is sent. In the intercept function you can then determine what touch events you want to handle and what events you want to let pass through to the Activity and other child items.
Here is what I had that enabled me to capture “swipe” or “fling” events while letting all other touch events through (e.g. it lets scroll up and down, long press, button press events through).
I hope that this helps anyone else who ran into a similar problem.