On touch event for a lienar layout multiple screens pops up. It seems that the ontouch event gets fired twice for each child element of the linear layout. How can I prevent this from firing twice. On click event for the same linear layout causes, the linear layout onclick event to be fired on second click and not on the first click. I am not understanding where I am going wrong. Please help.
-- XML
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:weightSum="1.0" >
<LinearLayout
android:id="@+id/layout_button_sub"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/Home.Item.Spacing.Vertical"
android:layout_marginLeft="@dimen/Home.Item.Spacing.Horizontal"
android:layout_marginRight="@dimen/Home.Item.Spacing.Horizontal"
android:layout_marginTop="@dimen/Home.Item.Spacing.Vertical"
android:layout_weight="0.5"
android:background="@drawable/bg_home_item"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="none" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="false"
android:focusableInTouchMode="false"
android:src="@drawable/ic_subs" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="false"
android:focusableInTouchMode="false"
android:gravity="right"
android:inputType="none"
android:text="Subscriptions"
android:textColor="@color/White"
android:textSize="@dimen/Normal.Text.Size" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_button_find"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/Home.Item.Spacing.Vertical"
android:layout_marginLeft="@dimen/Home.Item.Spacing.Horizontal"
android:layout_marginRight="@dimen/Home.Item.Spacing.Horizontal"
android:layout_marginTop="@dimen/Home.Item.Spacing.Vertical"
android:layout_weight="0.5"
android:background="@drawable/bg_home_item"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="none">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="false"
android:focusableInTouchMode="false"
android:src="@drawable/ic_find" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="false"
android:focusableInTouchMode="false"
android:gravity="right"
android:inputType="none"
android:text="Find Nearby"
android:textColor="@color/White"
android:textSize="@dimen/Normal.Text.Size" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
-- Activity on Oncreate method
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
linearLayoutSubs = (LinearLayout)findViewById(R.id.layout_button_sub);
linearLayoutFind = (LinearLayout)findViewById(R.id.layout_button_find);
linearLayoutSubs.setOnTouchListener(new mOnTouchListener());
linearLayoutFind.setOnTouchListener(new mOnTouchListener());
}
-- onTouch listener
public class mOnTouchListener implements OnTouchListener {
Intent intent = null;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(v.getId()) {
case R.id.layout_button_subscriptions:
intent = new Intent(AppActivity.this, Subs.class);//class for navigation
break;
case R.id.layout_button_find_nearby:
intent = new Intent(AppActivity.this, Find.class);//class for navigation
break;
}
if(intent != null) {
startActivity(intent);
}
return true;
}
}