Reputation: 258
I added a ontouchlistener on linearlayout which include a TextView and a ImageView.When I touched the TextView part it works,and the ImageView doesn't work.I want all the linearlayout can get the touch event.What should I do? My XML is as follows:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dip"
android:background="@drawable/graytitle_bj1_black"
android:gravity="center|bottom"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/nav_boutique"
android:layout_width="120dip"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="2dip"
android:clickable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="blocksDescendants">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/description"
android:src="@drawable/btn_jingpin_icon"
android:background="#FFF"
android:focusable="false"
android:clickable="true"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:text="@string/bottom_jingpin"/>
<View
android:id="@+id/nav_boutique_line"
android:layout_width="fill_parent"
android:layout_height="2dip"
android:background="#F00"/>
</LinearLayout>
<View
android:layout_width="1dip"
android:layout_height="fill_parent"/>
<LinearLayout
android:id="@+id/nav_fenlei"
android:layout_width="120dip"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="2dip"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusableInTouchMode="true">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/description"
android:src="@drawable/icon_fenlei"
android:background="#00000000"
android:focusable="false"
android:clickable="true"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:text="@string/bottom_fenlei"/>
<View
android:id="@+id/nav_fenlei_line"
android:layout_width="fill_parent"
android:layout_height="2dip"/>
</LinearLayout>
<View
android:layout_width="1dip"
android:layout_height="fill_parent"/>
<LinearLayout
android:id="@+id/nav_dingyue"
android:layout_width="120dip"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="2dip"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusableInTouchMode="true">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/description"
android:src="@drawable/btn_zizhudingyue_icon"
android:background="#00000000"
android:clickable="true"
android:focusable="false"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:text="@string/bottom_dingyue"/>
<View
android:id="@+id/nav_dingyue_line"
android:layout_width="fill_parent"
android:layout_height="2dip"/>
</LinearLayout>
<View
android:layout_width="1dip"
android:layout_height="fill_parent"/>
<LinearLayout
android:id="@+id/nav_sousuo"
android:layout_width="120dip"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="2dip"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusableInTouchMode="true">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/description"
android:src="@drawable/icon_sousuo"
android:background="#00000000"
android:focusable="false"
android:clickable="true"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#ffffff"
android:text="@string/bottom_sousuo"/>
<View
android:id="@+id/nav_sousuo_line"
android:layout_width="fill_parent"
android:layout_height="2dip"/>
</LinearLayout>
</LinearLayout>
And this is my code:
dingyueLL.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
setFlagTrue(Navigation.Dingyue.getPosition());
setBtnLine();
return false;
}
});
Upvotes: 3
Views: 8332
Reputation: 3576
Create custom linear layout with onintercepttouchevent
.
public class MyLayout extends LinearLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// do whatever you want with the event
// and return true so that children don't receive it
return true;
}
}
check this thread.
http://developer.android.com/training/gestures/viewgroup.html
adding touch listener for liner layout filled with buttons
Upvotes: 3
Reputation: 10947
What i would try is to explicitly add a touch listener to the image, and see what happend. in this listener, dont call the supper, and return false, so the event will propagate to the next listener, hopefully the layout
dingyueLL.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
setFlagTrue(Navigation.Dingyue.getPosition());
setBtnLine();
return false;
}
});
THEIMAGE.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
return false;
}
});
also, put a breakpoint in the ontouch function of the listener of the image, to see if it is getting there
Upvotes: 1