summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java61
-rw-r--r--java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml10
-rw-r--r--java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml23
-rw-r--r--java/com/android/dialer/historyitemactions/res/values-land/styles.xml21
-rw-r--r--java/com/android/dialer/historyitemactions/res/values/dimens.xml1
-rw-r--r--java/com/android/dialer/historyitemactions/res/values/styles.xml32
-rw-r--r--java/com/android/dialer/inject/GenerateDaggerApp.java30
-rw-r--r--java/com/android/dialer/inject/RootComponentGeneratorMetadata.java4
-rw-r--r--java/com/android/dialer/rootcomponentgenerator/DaggerApplicationGeneratingStep.java146
-rw-r--r--java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java9
-rw-r--r--java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java1
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java13
12 files changed, 328 insertions, 23 deletions
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
index 28663c17d..e3e9e7a64 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
@@ -19,6 +19,9 @@ package com.android.dialer.historyitemactions;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.design.widget.BottomSheetBehavior;
+import android.support.design.widget.BottomSheetBehavior.BottomSheetCallback;
import android.support.design.widget.BottomSheetDialog;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
@@ -26,6 +29,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -49,9 +53,9 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
Context context,
HistoryItemBottomSheetHeaderInfo historyItemBottomSheetHeaderInfo,
List<HistoryItemActionModule> modules) {
- super(context);
+ super(context, R.style.HistoryItemBottomSheet);
this.modules = modules;
- this.historyItemBottomSheetHeaderInfo = historyItemBottomSheetHeaderInfo;
+ this.historyItemBottomSheetHeaderInfo = Assert.isNotNull(historyItemBottomSheetHeaderInfo);
setContentView(LayoutInflater.from(context).inflate(R.layout.sheet_layout, null));
}
@@ -67,10 +71,10 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
@Override
protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- LinearLayout container = Assert.isNotNull(findViewById(R.id.action_container));
- container.addView(getContactView(container));
+ setupWindow();
+ setupContactLayout();
+ LinearLayout container = Assert.isNotNull(findViewById(R.id.action_container));
for (HistoryItemActionModule module : modules) {
if (module instanceof DividerModule) {
container.addView(getDividerView(container));
@@ -80,9 +84,20 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
}
}
- private View getContactView(ViewGroup container) {
- LayoutInflater inflater = LayoutInflater.from(getContext());
- View contactView = inflater.inflate(R.layout.contact_layout, container, false);
+ // Overrwrites the window size since Dialog's don't match parent.
+ private void setupWindow() {
+ Window window = getWindow();
+ if (window == null) {
+ return;
+ }
+ // TODO(calderwoodra): set the nav bar color
+ window.setLayout(
+ /* width = */ ViewGroup.LayoutParams.MATCH_PARENT,
+ /* height = */ ViewGroup.LayoutParams.MATCH_PARENT);
+ }
+
+ private void setupContactLayout() {
+ View contactView = Assert.isNotNull(findViewById(R.id.contact_layout_root));
ContactPhotoView contactPhotoView = contactView.findViewById(R.id.contact_photo_view);
contactPhotoView.setPhoto(historyItemBottomSheetHeaderInfo.getPhotoInfo());
@@ -97,7 +112,35 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
secondaryTextView.setVisibility(View.GONE);
secondaryTextView.setText(null);
}
- return contactView;
+
+ View background = findViewById(android.support.design.R.id.touch_outside);
+ BottomSheetBehavior behavior =
+ BottomSheetBehavior.from(findViewById(android.support.design.R.id.design_bottom_sheet));
+ behavior.setBottomSheetCallback(
+ new BottomSheetCallback() {
+ @Override
+ public void onStateChanged(@NonNull View bottomSheet, int newState) {
+ if (newState == BottomSheetBehavior.STATE_HIDDEN) {
+ cancel();
+ return;
+ }
+
+ // If the bottomsheet can expand to full screen, set the header's elevation when it's
+ // fully expanded.
+ if (background.getHeight() == bottomSheet.getHeight()) {
+ contactView.setElevation(
+ newState == BottomSheetBehavior.STATE_EXPANDED
+ ? getContext()
+ .getResources()
+ .getDimensionPixelSize(R.dimen.contact_actions_header_elevation)
+ : 0);
+ // TODO(calderwoodra): set the status bar color when expanded, else translucent
+ }
+ }
+
+ @Override
+ public void onSlide(@NonNull View bottomSheet, float slideOffset) {}
+ });
}
private View getDividerView(ViewGroup container) {
diff --git a/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml b/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml
index f2dc8c7ac..721740f97 100644
--- a/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml
+++ b/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml
@@ -15,13 +15,15 @@
~ limitations under the License
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/contact_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="12dp"
- android:layout_marginEnd="8dp"
+ android:paddingTop="12dp"
+ android:paddingBottom="12dp"
+ android:paddingEnd="8dp"
android:gravity="center_vertical"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ android:background="#FFFFFF">
<com.android.dialer.widget.ContactPhotoView
android:id="@+id/contact_photo_view"
diff --git a/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml b/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
index 6984367bf..006302e2d 100644
--- a/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
+++ b/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
@@ -16,9 +16,24 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/action_container"
+ android:id="@+id/history_item_actions_bottom_sheet_root"
android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingTop="4dp"
- android:paddingBottom="8dp"/>
+ android:layout_height="match_parent">
+
+ <include layout="@layout/contact_layout"/>
+
+ <android.support.v4.widget.NestedScrollView
+ android:id="@+id/history_actions_scroll_view"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <LinearLayout
+ android:id="@+id/action_container"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="4dp"
+ android:clipToPadding="false"/>
+ </android.support.v4.widget.NestedScrollView>
+</LinearLayout>
diff --git a/java/com/android/dialer/historyitemactions/res/values-land/styles.xml b/java/com/android/dialer/historyitemactions/res/values-land/styles.xml
new file mode 100644
index 000000000..bc727d073
--- /dev/null
+++ b/java/com/android/dialer/historyitemactions/res/values-land/styles.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 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
+ -->
+<resources>
+ <style name="HistoryItemBottomSheet.BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
+ <item name="behavior_peekHeight">206dp</item>
+ </style>
+</resources>
diff --git a/java/com/android/dialer/historyitemactions/res/values/dimens.xml b/java/com/android/dialer/historyitemactions/res/values/dimens.xml
index 47bf804ac..a98101e0e 100644
--- a/java/com/android/dialer/historyitemactions/res/values/dimens.xml
+++ b/java/com/android/dialer/historyitemactions/res/values/dimens.xml
@@ -17,4 +17,5 @@
<resources>
<dimen name="contact_actions_image_size">48dp</dimen>
<dimen name="contact_actions_image_margin">12dp</dimen>
+ <dimen name="contact_actions_header_elevation">4dp</dimen>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/historyitemactions/res/values/styles.xml b/java/com/android/dialer/historyitemactions/res/values/styles.xml
new file mode 100644
index 000000000..ed3cf115a
--- /dev/null
+++ b/java/com/android/dialer/historyitemactions/res/values/styles.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 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
+ -->
+<resources>
+ <style name="HistoryItemBottomSheet.Base" parent="Theme.Design.Light.BottomSheetDialog">
+ <item name="android:windowDrawsSystemBarBackgrounds">false</item>
+ <item name="android:windowTranslucentNavigation">false</item>
+ <item name="android:windowTranslucentStatus">false</item>
+ <item name="android:navigationBarColor">@color/background_dialer_white</item>
+ </style>
+
+ <style name="HistoryItemBottomSheet" parent="HistoryItemBottomSheet.Base">
+ <item name="bottomSheetStyle">@style/HistoryItemBottomSheet.BottomSheetStyle</item>
+ </style>
+
+ <style name="HistoryItemBottomSheet.BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
+ <item name="behavior_peekHeight">405dp</item>
+ </style>
+</resources>
diff --git a/java/com/android/dialer/inject/GenerateDaggerApp.java b/java/com/android/dialer/inject/GenerateDaggerApp.java
new file mode 100644
index 000000000..042561d9e
--- /dev/null
+++ b/java/com/android/dialer/inject/GenerateDaggerApp.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2018 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.dialer.inject;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/** Annotates an inner class where an application with dagger instance is needed. */
+@Target({ElementType.TYPE})
+public @interface GenerateDaggerApp {
+ /** Name of the application to be generated. */
+ String name();
+
+ /** Dialer variant of the application to be generated. */
+ DialerVariant variant();
+}
diff --git a/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
index 51d134a95..924b41e84 100644
--- a/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
+++ b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
@@ -20,8 +20,8 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
/**
- * Only used by rootcomponent generator to store metadata for locating annotated
- * (@DialerComponent, @InstallIn) class.
+ * Only used by rootcomponent generator to store metadata for locating annotated class with {@link
+ * IncludeInDialerRoot}, {@link InstallIn}.
*/
@Target(ElementType.TYPE)
public @interface RootComponentGeneratorMetadata {
diff --git a/java/com/android/dialer/rootcomponentgenerator/DaggerApplicationGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/DaggerApplicationGeneratingStep.java
new file mode 100644
index 000000000..7a23486c8
--- /dev/null
+++ b/java/com/android/dialer/rootcomponentgenerator/DaggerApplicationGeneratingStep.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2018 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.dialer.rootcomponentgenerator;
+
+import com.android.dialer.inject.DialerRootComponent;
+import com.android.dialer.inject.DialerVariant;
+import com.android.dialer.inject.GenerateDaggerApp;
+import com.android.dialer.inject.HasRootComponent;
+import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
+import com.google.auto.common.MoreElements;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.SetMultimap;
+import com.squareup.javapoet.AnnotationSpec;
+import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.FieldSpec;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.TypeName;
+import com.squareup.javapoet.TypeSpec;
+import java.lang.annotation.Annotation;
+import java.util.Collections;
+import java.util.Set;
+import javax.annotation.processing.ProcessingEnvironment;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.TypeElement;
+
+/**
+ * Generates an application class with dagger component instance for a type annotated with {@link
+ * GenerateDaggerApp}.
+ *
+ * <p>Generated code example:
+ *
+ * <p><code>
+ * @DialerRootComponent(variant = DialerVariant.DIALER_TEST)
+ * class GeneratedApplication extends Application implements HasRootComponent {
+ * private volatile Object rootComponent;
+ *
+ * @Override
+ * @NonNull
+ * public final Object component() {
+ * Object result = rootComponent;
+ * if (result == null) {
+ * synchronized (this) {
+ * result = rootComponent;
+ * if (result == null) {
+ * rootComponent =
+ * result = DaggerDialerTest.builder().contextModule(new ContextModule(this)).build();
+ * }
+ * }
+ * }
+ * return result;
+ * }
+ * }
+ * </code>
+ */
+public class DaggerApplicationGeneratingStep implements ProcessingStep {
+
+ private static final ClassName ANDROID_APPLICATION_CLASS_NAME =
+ ClassName.get("android.app", "Application");
+
+ private final ProcessingEnvironment processingEnv;
+
+ public DaggerApplicationGeneratingStep(ProcessingEnvironment processingEnv) {
+ this.processingEnv = processingEnv;
+ }
+
+ @Override
+ public Set<? extends Class<? extends Annotation>> annotations() {
+ return ImmutableSet.of(GenerateDaggerApp.class);
+ }
+
+ @Override
+ public Set<? extends Element> process(
+ SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
+ for (Element element : elementsByAnnotation.get(GenerateDaggerApp.class)) {
+ GenerateDaggerApp generateDaggerApp = element.getAnnotation(GenerateDaggerApp.class);
+ RootComponentUtils.writeJavaFile(
+ processingEnv,
+ ClassName.get(MoreElements.asType(element)).packageName(),
+ generateDaggerApplication(generateDaggerApp.name(), generateDaggerApp.variant()));
+ }
+
+ return Collections.emptySet();
+ }
+
+ private TypeSpec generateDaggerApplication(String name, DialerVariant variant) {
+ return TypeSpec.classBuilder(name)
+ .addAnnotation(
+ AnnotationSpec.builder(DialerRootComponent.class)
+ .addMember("variant", "$T.$L", DialerVariant.class, variant.name())
+ .build())
+ .superclass(ANDROID_APPLICATION_CLASS_NAME)
+ .addSuperinterface(HasRootComponent.class)
+ .addField(
+ FieldSpec.builder(TypeName.OBJECT, "rootComponent", Modifier.PRIVATE, Modifier.VOLATILE)
+ .build())
+ .addMethod(generateComponentMethod(variant))
+ .build();
+ }
+
+ private MethodSpec generateComponentMethod(DialerVariant dialerVariant) {
+ return MethodSpec.overriding(getComponentMethodFromHasRootComponent())
+ .addModifiers(Modifier.FINAL)
+ .addAnnotation(ClassName.get("android.support.annotation", "NonNull"))
+ .addStatement("$T result = rootComponent", TypeName.OBJECT)
+ .beginControlFlow("if (result == null)")
+ .beginControlFlow("synchronized (this)")
+ .addStatement("result = rootComponent")
+ .beginControlFlow("if (result == null)")
+ .addStatement(
+ "rootComponent = result = Dagger$L.builder().contextModule(new $T(this)).build()",
+ dialerVariant,
+ ClassName.get("com.android.dialer.inject", "ContextModule"))
+ .endControlFlow()
+ .endControlFlow()
+ .endControlFlow()
+ .addStatement("return result")
+ .build();
+ }
+
+ private ExecutableElement getComponentMethodFromHasRootComponent() {
+ TypeElement hasRootComponentInterafce =
+ processingEnv.getElementUtils().getTypeElement(HasRootComponent.class.getTypeName());
+ for (Element element : hasRootComponentInterafce.getEnclosedElements()) {
+ if (element.getSimpleName().contentEquals("component")) {
+ return MoreElements.asExecutable(element);
+ }
+ }
+ throw new RuntimeException("No component method inside HasRootComponent!");
+ }
+}
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
index 4c4e6ee8d..cb312083f 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
@@ -72,8 +72,7 @@ final class RootComponentGeneratingStep implements ProcessingStep {
// defer root components to the next round in case where the current build target contains
// elements annotated with @InstallIn. Annotation processor cannot detect metadata files
// generated in the same round and the metadata is accessible in the next round.
- if (elementsByAnnotation.containsKey(InstallIn.class)
- || elementsByAnnotation.containsKey(IncludeInDialerRoot.class)) {
+ if (shouldDeferRootComponent(elementsByAnnotation)) {
return elementsByAnnotation.get(DialerRootComponent.class);
} else {
generateRootComponent(MoreElements.asType(element));
@@ -82,6 +81,12 @@ final class RootComponentGeneratingStep implements ProcessingStep {
return Collections.emptySet();
}
+ private boolean shouldDeferRootComponent(
+ SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
+ return elementsByAnnotation.containsKey(InstallIn.class)
+ || elementsByAnnotation.containsKey(IncludeInDialerRoot.class);
+ }
+
/**
* Generates a root component.
*
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
index 76df5e312..be043eb04 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
@@ -30,6 +30,7 @@ public class RootComponentProcessor extends BasicAnnotationProcessor {
protected Iterable<? extends ProcessingStep> initSteps() {
return ImmutableList.of(
new MetadataGeneratingStep(processingEnv),
+ new DaggerApplicationGeneratingStep(processingEnv),
new RootComponentGeneratingStep(processingEnv));
}
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 124470617..702472c6a 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -80,7 +80,7 @@ import java.util.List;
public class SpeedDialFragment extends Fragment {
private final SpeedDialHeaderListener headerListener = new SpeedDialFragmentHeaderListener();
- private final SuggestedContactsListener suggestedListener = new SpeedDialSuggestedListener();
+ private final SpeedDialSuggestedListener suggestedListener = new SpeedDialSuggestedListener();
private ContextMenu contextMenu;
private FrameLayout contextMenuBackground;
@@ -214,6 +214,7 @@ public class SpeedDialFragment extends Fragment {
}),
new DefaultFutureCallback<>(),
DialerExecutorComponent.get(getContext()).backgroundExecutor());
+ suggestedListener.onPause();
}
@Override
@@ -313,6 +314,8 @@ public class SpeedDialFragment extends Fragment {
private final class SpeedDialSuggestedListener implements SuggestedContactsListener {
+ private HistoryItemActionBottomSheet bottomSheet;
+
@Override
public void onOverFlowMenuClicked(
SpeedDialUiItem speedDialUiItem, HistoryItemBottomSheetHeaderInfo headerInfo) {
@@ -364,7 +367,7 @@ public class SpeedDialFragment extends Fragment {
R.string.contact_menu_contact_info,
R.drawable.context_menu_contact_icon));
- HistoryItemActionBottomSheet.show(getContext(), headerInfo, modules);
+ bottomSheet = HistoryItemActionBottomSheet.show(getContext(), headerInfo, modules);
}
@Override
@@ -430,6 +433,12 @@ public class SpeedDialFragment extends Fragment {
return false;
}
}
+
+ public void onPause() {
+ if (bottomSheet != null && bottomSheet.isShowing()) {
+ bottomSheet.dismiss();
+ }
+ }
}
private static final class SpeedDialContextMenuItemListener implements ContextMenuItemListener {