Centers the QuickContact card in portrait on large tablets
bug: 16679207
Change-Id: I72f527296d219fcd168f790b82e4517625d9c0ca
diff --git a/res/layout-land/quickcontact_activity.xml b/res/layout-land/quickcontact_activity.xml
index b22b5ef..af622dc 100644
--- a/res/layout-land/quickcontact_activity.xml
+++ b/res/layout-land/quickcontact_activity.xml
@@ -13,50 +13,6 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<com.android.contacts.widget.MultiShrinkScroller
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:id="@+id/multiscroller"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:descendantFocusability="afterDescendants" >
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <View
- android:layout_width="match_parent"
- android:layout_height="@dimen/quickcontact_starting_empty_height"
- android:contentDescription="@string/quickcontact_transparent_view_description"
- android:id="@+id/transparent_view" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
-
- <!-- Needs a non null background for elevation to work on this View. This will
- *not* cause an additional draw since the background is transparent. -->
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#00000000"
- android:id="@+id/toolbar_parent">
-
- <include layout="@layout/quickcontact_header" />
-
- <include layout="@layout/quickcontact_title" />
-
- </FrameLayout>
-
- <include layout="@layout/quickcontact_content" />
-
- </LinearLayout>
-
- </LinearLayout>
-
-</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
+<merge>
+ <include layout="@layout/quickcontact_activity_landscape" />
+</merge>
\ No newline at end of file
diff --git a/res/layout-sw720dp-land/quickcontact_activity.xml b/res/layout-sw720dp-land/quickcontact_activity.xml
new file mode 100644
index 0000000..af622dc
--- /dev/null
+++ b/res/layout-sw720dp-land/quickcontact_activity.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<merge>
+ <include layout="@layout/quickcontact_activity_landscape" />
+</merge>
\ No newline at end of file
diff --git a/res/layout-sw720dp/quickcontact_activity.xml b/res/layout-sw720dp/quickcontact_activity.xml
new file mode 100644
index 0000000..e8fcf54
--- /dev/null
+++ b/res/layout-sw720dp/quickcontact_activity.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2011 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.
+-->
+<com.android.contacts.widget.MultiShrinkScroller
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/multiscroller"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:descendantFocusability="afterDescendants" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+
+ <View
+ android:id="@+id/empty_start_column"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/contact_list_space_layout_weight"/>
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_weight="@integer/contact_list_card_layout_weight"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/quickcontact_starting_empty_height"
+ android:contentDescription="@string/quickcontact_transparent_view_description"
+ android:id="@+id/transparent_view" />
+
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/toolbar_parent">
+ <include layout="@layout/quickcontact_header" />
+ </FrameLayout>
+
+ <include layout="@layout/quickcontact_content" />
+
+ </LinearLayout>
+
+ <View
+ android:id="@+id/empty_end_column"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="@integer/contact_list_space_layout_weight"/>
+
+ </LinearLayout>
+
+ <!-- This title's maximum height must be less than the minimum size of its
+ parent ViewGroup because of an oddity in the way View#setScaleY() works. As a result,
+ this title can not be inside @style/quickcontact_header. -->
+ <include layout="@layout/quickcontact_title" />
+</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/layout/quickcontact_activity_landscape.xml b/res/layout/quickcontact_activity_landscape.xml
new file mode 100644
index 0000000..1130ff8
--- /dev/null
+++ b/res/layout/quickcontact_activity_landscape.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<!-- This file is in the base layout/ directory so that it can be referenced from multiple config
+ folder without duplicating this file. -->
+<com.android.contacts.widget.MultiShrinkScroller
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/multiscroller"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:descendantFocusability="afterDescendants" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/quickcontact_starting_empty_height"
+ android:contentDescription="@string/quickcontact_transparent_view_description"
+ android:id="@+id/transparent_view" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+
+ <!-- Needs a non null background for elevation to work on this View. This will
+ *not* cause an additional draw since the background is transparent. -->
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#00000000"
+ android:id="@+id/toolbar_parent">
+
+ <include layout="@layout/quickcontact_header" />
+
+ <include layout="@layout/quickcontact_title" />
+
+ </FrameLayout>
+
+ <include layout="@layout/quickcontact_content" />
+
+ </LinearLayout>
+
+ </LinearLayout>
+
+</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/values-sw720dp/integers.xml b/res/values-sw720dp/integers.xml
index de13e46..ff73c62 100644
--- a/res/values-sw720dp/integers.xml
+++ b/res/values-sw720dp/integers.xml
@@ -19,10 +19,10 @@
<integer name="contact_tile_column_count">2</integer>
- <!-- Layout weight of space elements in PeopleActivity for favorites list and all
- contacts list-->
+ <!-- Layout weight of column space elements for favorites list, all contacts list and
+ QuickContact-->
<integer name="contact_list_space_layout_weight">11</integer>
- <!-- Layout weight of ListViews in PeopleActivityfor tile favorites list and all
- contacts list in PeopleActivity -->
+ <!-- Layout weight of the content column for tile favorites list, all contacts list, and
+ QuickContact -->
<integer name="contact_list_card_layout_weight">81</integer>
</resources>
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index a46749f..c631dd5 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -102,6 +102,7 @@
private TextView mInvisiblePlaceholderTextView;
private View mTitleGradientView;
private View mActionBarGradientView;
+ private View mStartColumn;
private int mHeaderTintColor;
private int mMaximumHeaderHeight;
private int mMinimumHeaderHeight;
@@ -267,6 +268,22 @@
mTransparentView = findViewById(R.id.transparent_view);
mLargeTextView = (TextView) findViewById(R.id.large_title);
mInvisiblePlaceholderTextView = (TextView) findViewById(R.id.placeholder_textview);
+ mStartColumn = findViewById(R.id.empty_start_column);
+ // Touching the empty space should close the card
+ if (mStartColumn != null) {
+ mStartColumn.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ scrollOffBottom();
+ }
+ });
+ findViewById(R.id.empty_end_column).setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ scrollOffBottom();
+ }
+ });
+ }
mListener = listener;
mIsOpenContactSquare = isOpenContactSquare;
@@ -989,8 +1006,12 @@
= (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
final LinearLayout.LayoutParams toolbarLayoutParams
= (LinearLayout.LayoutParams) mToolbar.getLayoutParams();
+
+ // Need to add more to margin start if there is a start column
+ int startColumnWidth = mStartColumn == null ? 0 : mStartColumn.getWidth();
+
titleLayoutParams.setMarginStart((int) (mCollapsedTitleStartMargin * (1 - x)
- + mMaximumTitleMargin * x));
+ + mMaximumTitleMargin * x) + startColumnWidth);
// How offset the title should be from the bottom of the toolbar
final int pretendBottomMargin = (int) (mCollapsedTitleBottomMargin * (1 - x)
+ mMaximumTitleMargin * x) ;