summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Monk <jmonk@google.com> 2016-05-27 16:51:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-05-27 16:51:48 +0000
commit4f620d423f82dd43ed79178e0091132dd49ca2a9 (patch)
tree42e08df3122c6ce8f5f676e7336c64f3f3af6686
parentcd9ea74659be1f831eb160dd14648de046c75073 (diff)
parent0215802097afca0cadc252a47ba1ea6301ca63a7 (diff)
Merge "QS: Handle detail scroll properly" into nyc-dev
-rw-r--r--packages/SystemUI/res/layout/qs_detail.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java52
2 files changed, 54 insertions, 2 deletions
diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml
index 32839d8ca1af..63390e2337ae 100644
--- a/packages/SystemUI/res/layout/qs_detail.xml
+++ b/packages/SystemUI/res/layout/qs_detail.xml
@@ -44,7 +44,7 @@
android:layout_height="wrap_content"
/>
- <ScrollView
+ <com.android.systemui.qs.NonInterceptingScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
@@ -52,7 +52,7 @@
android:id="@android:id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- </ScrollView>
+ </com.android.systemui.qs.NonInterceptingScrollView>
<include layout="@layout/qs_detail_buttons" />
diff --git a/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java b/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java
new file mode 100644
index 000000000000..15e1c96324b9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package com.android.systemui.qs;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.ScrollView;
+
+/**
+ * ScrollView that disallows intercepting for touches that can cause scrolling.
+ */
+public class NonInterceptingScrollView extends ScrollView {
+
+ private float mInitialY;
+
+ public NonInterceptingScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ int action = ev.getActionMasked();
+ switch (action) {
+ case MotionEvent.ACTION_DOWN:
+ mInitialY = ev.getY();
+ break;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ requestDisallowInterceptTouchEvent(false);
+ break;
+ default:
+ if (canScrollVertically(ev.getY() > mInitialY ? -1 : 1)) {
+ requestDisallowInterceptTouchEvent(true);
+ }
+ break;
+ }
+ return super.onTouchEvent(ev);
+ }
+}