diff options
| author | 2016-05-27 16:51:47 +0000 | |
|---|---|---|
| committer | 2016-05-27 16:51:48 +0000 | |
| commit | 4f620d423f82dd43ed79178e0091132dd49ca2a9 (patch) | |
| tree | 42e08df3122c6ce8f5f676e7336c64f3f3af6686 | |
| parent | cd9ea74659be1f831eb160dd14648de046c75073 (diff) | |
| parent | 0215802097afca0cadc252a47ba1ea6301ca63a7 (diff) | |
Merge "QS: Handle detail scroll properly" into nyc-dev
| -rw-r--r-- | packages/SystemUI/res/layout/qs_detail.xml | 4 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/NonInterceptingScrollView.java | 52 |
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); + } +} |