summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/historyitemactions
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-05-01 11:31:45 -0700
committerWeijia Xu <weijiaxu@google.com>2018-05-03 14:57:57 -0700
commit41f5c0c37110da463ef2dec9f4f5bdcdd4bcd2f1 (patch)
tree03b103dd45895f111507369c50aa473c7b019421 /java/com/android/dialer/historyitemactions
parent86214b64708c84dbf1c5aead33f2e4206eb83dd9 (diff)
Updated bottomsheet to be scrollable.
Follow-up CLs will include: - white bottom nav - setting status bar color when expanded, translucent otherwise - automatically dismissing the bottomsheet onPause in calllog/vvm Bug: 73495458,77761183,77812338,77816530,77833456 Test: manual PiperOrigin-RevId: 194967761 Change-Id: Iea81035efd06ae7692950ca1f11757b7d9ebfd1c
Diffstat (limited to 'java/com/android/dialer/historyitemactions')
-rw-r--r--java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java63
-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.xml25
-rw-r--r--java/com/android/dialer/historyitemactions/res/values/dimens.xml1
-rw-r--r--java/com/android/dialer/historyitemactions/res/values/styles.xml26
6 files changed, 130 insertions, 18 deletions
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
index 28663c17d..f90effc4c 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
@@ -19,13 +19,17 @@ package com.android.dialer.historyitemactions;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
-import android.support.design.widget.BottomSheetDialog;
+import android.support.annotation.NonNull;
+import android.support.design.bottomsheet.BottomSheetBehavior;
+import android.support.design.bottomsheet.BottomSheetBehavior.BottomSheetCallback;
+import android.support.design.bottomsheet.BottomSheetDialog;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
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..af9c0d94d
--- /dev/null
+++ b/java/com/android/dialer/historyitemactions/res/values-land/styles.xml
@@ -0,0 +1,25 @@
+<?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" parent="HistoryItemBottomSheet.Base">
+ <item name="bottomSheetStyle">@style/HistoryItemBottomSheet.BottomSheetStyle</item>
+ </style>
+
+ <style name="HistoryItemBottomSheet.BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
+ <item name="behavior_peekHeight">100dp</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..fbdfb7d60
--- /dev/null
+++ b/java/com/android/dialer/historyitemactions/res/values/styles.xml
@@ -0,0 +1,26 @@
+<?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.MaterialComponents.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"/>
+</resources>