Skip to content

Commit 38db2e8

Browse files
Material Design Teamhunterstich
authored andcommitted
[BottomSheet] Add tooltip text for drag handle
PiperOrigin-RevId: 884493892
1 parent 019d44e commit 38db2e8

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

lib/java/com/google/android/material/bottomsheet/BottomSheetDragHandleView.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import android.annotation.SuppressLint;
2525
import android.content.Context;
26+
import android.os.Build;
2627
import android.os.Handler;
2728
import android.os.Looper;
2829
import androidx.appcompat.widget.AppCompatImageView;
@@ -104,12 +105,20 @@ public void onSlide(@NonNull View bottomSheet, float slideOffset) {}
104105
* the sheet.
105106
*/
106107
private final OnGestureListener gestureListener = new SimpleOnGestureListener() {
107-
108108
@Override
109109
public boolean onDown(@NonNull MotionEvent e) {
110110
return isClickable();
111111
}
112112

113+
@Override
114+
public void onLongPress(@NonNull MotionEvent e) {
115+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
116+
performLongClick(e.getX(), e.getY());
117+
} else {
118+
performLongClick();
119+
}
120+
}
121+
113122
@Override
114123
public boolean onSingleTapConfirmed(@NonNull MotionEvent e) {
115124
return expandOrCollapseBottomSheetIfPossible();
@@ -141,6 +150,11 @@ public BottomSheetDragHandleView(
141150
// Override the provided context with the wrapped one to prevent it from being used.
142151
context = getContext();
143152

153+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
154+
setTooltipText(
155+
getResources().getString(R.string.bottomsheet_drag_handle_content_description));
156+
}
157+
144158
gestureDetector =
145159
new GestureDetector(context, gestureListener, new Handler(Looper.getMainLooper()));
146160

lib/javatests/com/google/android/material/bottomsheet/BottomSheetDragHandleTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import static com.google.common.truth.Truth.assertThat;
2525
import static org.robolectric.Shadows.shadowOf;
2626

27+
import android.os.Build;
2728
import android.os.Bundle;
2829
import androidx.appcompat.app.AppCompatActivity;
2930
import android.util.SparseIntArray;
@@ -34,6 +35,7 @@
3435
import android.widget.FrameLayout;
3536
import androidx.annotation.NonNull;
3637
import androidx.annotation.Nullable;
38+
import androidx.annotation.RequiresApi;
3739
import androidx.coordinatorlayout.widget.CoordinatorLayout;
3840
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat;
3941
import androidx.test.core.app.ApplicationProvider;
@@ -44,6 +46,7 @@
4446
import org.junit.runner.RunWith;
4547
import org.robolectric.Robolectric;
4648
import org.robolectric.RobolectricTestRunner;
49+
import org.robolectric.annotation.Config;
4750

4851
@RunWith(RobolectricTestRunner.class)
4952
public class BottomSheetDragHandleTest {
@@ -449,6 +452,13 @@ public void test_customActionSetInExpandedStateWhenNotHideableAndSkipCollapsed()
449452
assertThat(hasAccessibilityAction(dragHandleView, ACTION_DISMISS.getId())).isFalse();
450453
}
451454

455+
@Test
456+
@Config(sdk = Build.VERSION_CODES.O)
457+
@RequiresApi(Build.VERSION_CODES.O)
458+
public void test_tooltipTextSetOnApi26() {
459+
assertThat(dragHandleView.getTooltipText()).isNotNull();
460+
}
461+
452462
private void assertImportantForAccessibility(boolean important) {
453463
if (important) {
454464
assertThat(dragHandleView.getImportantForAccessibility())

0 commit comments

Comments
 (0)