Détecter les glisser à l'aide de onTouchListener dans le ScrollView

J'utilise le code suivant pour détecter les glisser dans mon Activité:

getWindow().getDecorView().getRootView().setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
downX = event.getX();
downY = event.getY();
//mSwipeDetected = Action.None;
return true; //allow other events like Click to be processed
}
else if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL){
upX = event.getX();
upY = event.getY();
float deltaX = downX - upX;
float deltaY = downY - upY;
//horizontal swipe detection
if (Math.abs(deltaX) > MIN_DISTANCE) {
//left or right
if (deltaX < 0) {
Log.i(TAG, "Swipe Left to Right");
//mSwipeDetected = Action.LR;
onClickPrevQues(getWindow().getDecorView().getRootView());
return false;
}
if (deltaX > 0) {
Log.i(TAG, "Swipe Right to Left");
onClickNextQues(getWindow().getDecorView().getRootView());
//mSwipeDetected = Action.RL;
return false;
}
} else if (Math.abs(deltaY) > MIN_DISTANCE) { //vertical swipe
//detection
//top or down
if (deltaY < 0) {
Log.i(TAG, "Swipe Top to Bottom");
//mSwipeDetected = Action.TB;
return false;
}
if (deltaY > 0) {
Log.i(TAG, "Swipe Bottom to Top");
//mSwipeDetected = Action.BT;
return false;
}
}
return false;
}
else if(action == MotionEvent.ACTION_MOVE){
return true;
}
return false;
}
});

Le code fonctionne très bien dans le cas de LinearLayout. Étonnamment, la même chose ne fonctionne pas dans le cas où si j'enveloppe le Linearlayout à l'intérieur de ScrollView. Quel est le problème ici?

Edit:

Mise en page:

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout 
android:id="@+id/RelativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffffff"
android:gravity="center_horizontal" >
<RelativeLayout
android:id="@+id/RelativeLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingBottom="0dp"
android:paddingLeft="620dip"
android:paddingTop="15dip" >
<TextView
android:id="@+id/text_unattempted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:paddingTop="2dp"
android:text="TextView"
android:textColor="#b4cacc"
android:textStyle="bold" />
</RelativeLayout>
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/RelativeLayout2"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<RelativeLayout
android:id="@+id/relative_group"
android:layout_width="fill_parent"
android:layout_height="260dp"
android:layout_marginLeft="20dp"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_question_nu"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingTop="0dp"
android:text="Question 1"
android:textColor="#b4cacc"
android:textSize="28dp"
android:textStyle="bold" />
<TextView
android:id="@+id/question"
android:layout_width="fill_parent"
android:layout_height="400dp"
android:layout_alignLeft="@+id/txt_question_nu"
android:layout_below="@+id/txt_question_nu"
android:layout_marginBottom="20dp"
android:layout_marginTop="24dp"
android:textColor="#000000"
android:textSize="20dp" />
<WebView
android:id="@+id/questionimage"
android:layout_width="wrap_content"
android:layout_height="400dp"
android:layout_alignLeft="@+id/txt_question_nu"
android:layout_alignParentBottom="true"
android:layout_below="@+id/txt_question_nu"
android:layout_marginTop="24dp"
android:fadeScrollbars="false"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold" />
<Button
android:id="@+id/hintSolBtn"
style="@style/HomeButton"
android:layout_width="40dp"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/txt_question_nu"
android:background="#90b7bb"
android:onClick="onClickHintSol"
android:scaleType="centerInside"
android:text="Hint"
android:textColor="#ffffff" />
</RelativeLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/LinearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="15dp"
android:layout_below="@+id/radio_question_group"
android:layout_alignParentLeft="true"
android:orientation="horizontal"
android:paddingTop="5dip" >
<ImageButton
android:id="@+id/abandonButton"
style="@style/HomeButton"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_marginRight="45dp"
android:onClick="onAbandonAssess"
android:paddingLeft="6dp"
android:scaleType="centerInside"
android:src="@drawable/abandon"
android:visibility="gone" />
<Button
android:id="@+id/submitBtn"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="63dp"
android:background="#00b6c6"
android:onClick="onSubmitAssess"
android:paddingLeft="6dp"
android:scaleType="centerInside"
android:text="Submit"
android:textColor="#ffffff"
android:textSize="22dp" />
<ImageButton
android:id="@+id/prevBtn"
style="@style/HomeButton"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_weight="0.01"
android:onClick="onClickPrevQues"
android:scaleType="centerInside"
android:src="@drawable/previous" />
<ImageButton
android:id="@+id/nextBtn"
style="@style/HomeButton"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/prevBtn"
android:onClick="onClickNextQues"
android:scaleType="centerInside"
android:src="@drawable/next" />
</RelativeLayout>
<TextView
android:id="@+id/answer_choices"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/LinearLayout1"
android:layout_marginLeft="37dp"
android:text="Answer Choices"
android:textColor="#b4cacc"
android:textSize="20dp"
android:textStyle="bold" />
<RadioGroup
android:id="@+id/radio_question_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/answer_choices"
android:layout_below="@+id/answer_choices" >
<RadioButton
android:id="@+id/answer1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/radiostate"
android:checked="false"
android:layout_marginTop="10dp"
android:hapticFeedbackEnabled="true"
android:height="100dp"
android:textColor="#000000" />
<RadioButton
android:id="@+id/answer2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/radiostate"
android:layout_marginTop="10dp"
android:checked="false"
android:hapticFeedbackEnabled="true"
android:textColor="#000000" />
<RadioButton
android:id="@+id/answer3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/radiostate"
android:layout_marginTop="10dp"
android:checked="false"
android:hapticFeedbackEnabled="true"
android:textColor="#000000" />
<RadioButton
android:id="@+id/answer4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/radiostate"
android:layout_marginTop="10dp"
android:checked="false"
android:hapticFeedbackEnabled="true"
android:textColor="#000000" />
</RadioGroup>
<!-- <ImageView
android:id="@+id/pen_and_paper_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/pen_paper"
android:visibility="gone" /> -->
<ImageButton
android:id="@+id/erase"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_above="@+id/radio_question_group"
android:layout_below="@+id/LinearLayout1"
android:layout_toRightOf="@+id/answer_choices"
android:onClick="onEraseChoice"
android:src="@drawable/eraser"
android:visibility="visible" />
</RelativeLayout>
</ScrollView>
Le ScrollView prendre le toucher, et non linéaire de la mise en page...mieux utiliser listview insted
J'ai un tas de choses à l'intérieur de la LinearLayout, qui ne tiennent pas ensemble dans la ListView. ScrollView est la seule façon
u peut poster la capture d'écran de linearLayout
édité question pour ajouter de la présentation

OriginalL'auteur Jainendra | 2013-04-22