Add actionbar to Dialer
Initial changes to replace the fake actionbar affordances in Dialer
with an actual actionBar. This puts the dialer in an intermediate
hybrid state where we are now using the system actionbar for search,
but the searchview is not yet themed to look like our old search
bar, so this is definitely still WIP UI.
This CL retains the fake action bar at the bottom of the screen to
continue allowing quick access to call history while other changes
are underway, but replaces the searchview and the overflow menu
with framework provided actionbar functionality.
Other related changes:
* The searchview (in the top actionbar) is hidden when scrolling to
devote the entire screen area to the speeddial list
https://folio.googleplex.com/phone/L/0407/#/03.png
* Functionality provided by the fake overflow menu has been moved to
the real actionbar overflow menu
* Various modifications to child fragments/listviews to take into
account the existence of an actionbar
* Cleaned up unneeded styles and related-dead code
Bug: 13933082
Change-Id: Ifd855bd67af7bf2d2a403ef9556ade54e8d57ee6
diff --git a/res/layout/all_contacts_activity.xml b/res/layout/all_contacts_activity.xml
index a913027..50cba1e 100644
--- a/res/layout/all_contacts_activity.xml
+++ b/res/layout/all_contacts_activity.xml
@@ -17,7 +17,6 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginTop="?android:attr/actionBarSize"
android:id="@+id/all_contacts_frame">
<fragment android:name="com.android.dialer.list.AllContactsFragment"
android:id="@+id/all_contacts_fragment"
diff --git a/res/layout/call_log_activity.xml b/res/layout/call_log_activity.xml
index f9806e8..5a50823 100644
--- a/res/layout/call_log_activity.xml
+++ b/res/layout/call_log_activity.xml
@@ -17,11 +17,9 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginTop="?android:attr/actionBarSize"
android:id="@+id/calllog_frame">
<android.support.v4.view.ViewPager
android:id="@+id/call_log_pager"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginTop="?android:attr/actionBarSize" />
+ android:layout_height="match_parent"/>
</FrameLayout>
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
index dfe5c7c..d285cc3 100644
--- a/res/layout/dialpad_fragment.xml
+++ b/res/layout/dialpad_fragment.xml
@@ -49,7 +49,7 @@
android:layout_width="match_parent"
android:layout_height="10dp" />
- <include layout="@layout/dialpad_digits"/>
+ <include layout="@layout/dialpad_digits" />
<Space
android:layout_width="match_parent"
@@ -59,10 +59,6 @@
<Space
android:layout_width="match_parent"
- android:layout_height="8dp" />
-
- <Space
- android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/dialpad_separator_line_color" />
diff --git a/res/layout/dialtacts_activity.xml b/res/layout/dialtacts_activity.xml
index 2860886..2513216 100644
--- a/res/layout/dialtacts_activity.xml
+++ b/res/layout/dialtacts_activity.xml
@@ -15,143 +15,109 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/dialtacts_mainlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:focusable="true"
android:orientation="vertical"
+ android:focusable="true"
android:focusableInTouchMode="true"
android:clipChildren="false"
android:background="@color/background_dialer_light"
>
-
- <FrameLayout
+ <RelativeLayout
android:id="@+id/dialtacts_container"
android:layout_width="match_parent"
android:layout_height="0dp"
- android:layout_weight="1">
-
- <LinearLayout
- android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:clipChildren="false">
+ <!-- The main contacts grid -->
+ <FrameLayout
android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:id="@+id/dialtacts_frame"
android:clipChildren="false"
- android:orientation="vertical" >
-
- <!-- Search entry box and remove view -->
- <FrameLayout
+ >
+ </FrameLayout>
+ <!-- Search entry box and remove view -->
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:id="@+id/search_and_remove_view_container"
+ android:visibility="gone"
+ >
+ <!-- TODO: This is set to visibility:gone for now, should be removed entirely -->
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/search_and_remove_view_container"
+ android:layout_height="@dimen/search_box_height"
+ android:id="@+id/search_view_container"
+ android:orientation="horizontal"
+ android:layout_marginTop="@dimen/search_top_margin"
+ android:layout_marginBottom="@dimen/search_bottom_margin"
+ android:layout_marginLeft="@dimen/search_margin_horizontal"
+ android:layout_marginRight="@dimen/search_margin_horizontal"
+ android:paddingLeft="@dimen/search_box_left_padding"
+ android:paddingRight="@dimen/search_box_right_padding"
+ android:background="@drawable/search_bg"
+ android:gravity="center_vertical"
+ android:visibility="gone"
>
- <LinearLayout
+ <EditText
+ android:id="@+id/search_view"
android:layout_width="match_parent"
- android:layout_height="@dimen/search_box_height"
- android:id="@+id/search_view_container"
- android:orientation="horizontal"
- android:layout_marginTop="@dimen/search_top_margin"
- android:layout_marginBottom="@dimen/search_bottom_margin"
- android:layout_marginLeft="@dimen/search_margin_horizontal"
- android:layout_marginRight="@dimen/search_margin_horizontal"
- android:paddingLeft="@dimen/search_box_left_padding"
- android:paddingRight="@dimen/search_box_right_padding"
- android:background="@drawable/search_bg"
- android:gravity="center_vertical"
- >
- <EditText
- android:id="@+id/search_view"
- android:layout_width="match_parent"
- android:layout_height="@dimen/search_box_icon_size"
- android:layout_weight="1"
- android:layout_marginLeft="@dimen/search_box_text_left_margin"
- android:textSize="@dimen/search_text_size"
- android:fontFamily="@string/search_font_family"
- android:textColor="@color/searchbox_text_color"
- android:textColorHint="@color/searchbox_hint_text_color"
- android:inputType="textFilter"/>
- <ImageView
- android:id="@+id/search_close_button"
- android:layout_height="@dimen/search_box_icon_size"
- android:layout_width="@dimen/search_box_icon_size"
- android:padding="6dp"
- android:src="@drawable/ic_close_dk"
- android:clickable="true"
- android:background="?android:attr/selectableItemBackground"
- android:contentDescription="@string/description_clear_search"
- android:visibility="gone" />
- <ImageView
- android:id="@+id/voice_search_button"
- android:layout_height="@dimen/search_box_icon_size"
- android:layout_width="@dimen/search_box_icon_size"
- android:padding="@dimen/search_box_icon_padding"
- android:src="@drawable/ic_voice_search"
- android:clickable="true"
- android:contentDescription="@string/description_start_voice_search"
- android:background="?android:attr/selectableItemBackground" />
- </LinearLayout>
- <com.android.dialer.list.RemoveView
- android:layout_width="match_parent"
- android:layout_height="56dp"
- android:id="@+id/remove_view_container"
- android:orientation="horizontal"
- android:gravity="center"
- android:visibility="gone">
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/remove_view_icon"
- android:src="@drawable/ic_remove"
- android:contentDescription="@string/remove_contact"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/remove_view_text"
- android:textSize="@dimen/remove_text_size"
- android:textColor="@color/remove_text_color"
- android:text="@string/remove_contact"
- />
- </com.android.dialer.list.RemoveView>
- </FrameLayout>
-
- <!-- Relative Layout is used to contain the main contacts grid and the thin translucent
- horizontal divider line at the bottom of the contacts grid above the menu bar. -->
- <RelativeLayout android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:clipChildren="false"
- >
- <!-- The main contacts grid -->
- <FrameLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:id="@+id/dialtacts_frame"
- android:clipChildren="false"
- android:layout_alignParentBottom="true"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentRight="true"
- >
- </FrameLayout>
- <!-- Thin translucent horizontal line at the bottom of the contacts grid. Floats
- above the contacts grid and has a translucent color. -->
- <View
- android:layout_height="2dp"
- android:layout_width="match_parent"
- android:background="@color/contacts_grid_bottom_border_color"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentRight="true"
+ android:layout_height="@dimen/search_box_icon_size"
+ android:layout_weight="1"
+ android:layout_marginLeft="@dimen/search_box_text_left_margin"
+ android:textSize="@dimen/search_text_size"
+ android:fontFamily="@string/search_font_family"
+ android:textColor="@color/searchbox_text_color"
+ android:textColorHint="@color/searchbox_hint_text_color"
+ android:inputType="textFilter"/>
+ <ImageView
+ android:id="@+id/search_close_button"
+ android:layout_height="@dimen/search_box_icon_size"
+ android:layout_width="@dimen/search_box_icon_size"
+ android:padding="6dp"
+ android:src="@drawable/ic_close_dk"
+ android:clickable="true"
+ android:background="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/description_clear_search"
+ android:visibility="gone" />
+ <ImageView
+ android:id="@+id/voice_search_button"
+ android:layout_height="@dimen/search_box_icon_size"
+ android:layout_width="@dimen/search_box_icon_size"
+ android:padding="@dimen/search_box_icon_padding"
+ android:src="@drawable/ic_voice_search"
+ android:clickable="true"
+ android:contentDescription="@string/description_start_voice_search"
+ android:background="?android:attr/selectableItemBackground" />
+ </LinearLayout>
+ <com.android.dialer.list.RemoveView
+ android:layout_width="match_parent"
+ android:layout_height="56dp"
+ android:id="@+id/remove_view_container"
+ android:orientation="horizontal"
+ android:gravity="center">
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/remove_view_icon"
+ android:src="@drawable/ic_remove"
+ android:contentDescription="@string/remove_contact"
/>
- </RelativeLayout>
- <Space
- android:id="@+id/contact_tile_frame_spacer"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_alignParentBottom="true"
- android:visibility="gone"/>
- </LinearLayout>
- </FrameLayout>
-
- <!-- Fake action bar -->
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/remove_view_text"
+ android:textSize="@dimen/remove_text_size"
+ android:textColor="@color/remove_text_color"
+ android:text="@string/remove_contact"
+ />
+ </com.android.dialer.list.RemoveView>
+ </FrameLayout>
+ </RelativeLayout>
+ <!-- TODO: To be removed entirely and replaced with a floating action button -->
<FrameLayout
android:layout_height="@dimen/fake_action_bar_height"
android:layout_width="match_parent"
@@ -175,18 +141,19 @@
android:src="@drawable/ic_menu_dialpad_lt"/>
<ImageButton
android:id="@+id/dial_button"
- android:layout_width="@dimen/fake_menu_button_min_width"
- android:layout_height="match_parent"
+ android:layout_width="@dimen/fake_action_bar_height"
+ android:layout_height="@dimen/fake_action_bar_height"
android:layout_gravity="bottom|center"
android:background="@drawable/btn_call"
android:contentDescription="@string/description_dial_button"
android:src="@drawable/ic_dial_action_call"
android:visibility="gone" />
<ImageButton
- android:id="@+id/overflow_menu"
+ android:id="@+id/overflow_menu_button"
android:layout_width="@dimen/fake_menu_button_min_width"
android:layout_height="match_parent"
android:layout_gravity="bottom|end"
+ android:visibility="gone"
android:src="@drawable/ic_menu_overflow_lt"
android:contentDescription="@string/action_menu_overflow_description"
android:background="?android:attr/selectableItemBackground"/>
diff --git a/res/layout/phone_favorites_fragment.xml b/res/layout/phone_favorites_fragment.xml
index 4992486..91acb90 100644
--- a/res/layout/phone_favorites_fragment.xml
+++ b/res/layout/phone_favorites_fragment.xml
@@ -35,7 +35,7 @@
android:id="@+id/contact_tile_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingTop="@dimen/contact_tile_list_padding_top"
+ android:paddingTop="?android:attr/actionBarSize"
android:clipToPadding="false"
android:fadingEdge="none"
android:divider="@null" />
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
index 7e84818..71d095a 100644
--- a/res/menu/dialtacts_options.xml
+++ b/res/menu/dialtacts_options.xml
@@ -15,6 +15,16 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
+ android:id="@+id/menu_search"
+ android:title="@string/description_search_button"
+ android:showAsAction="always"
+ android:actionViewClass="android.widget.SearchView"/>
+ <item
+ android:id="@+id/menu_history"
+ android:icon="@drawable/ic_menu_history_lt"
+ android:title="@string/action_menu_call_history_description"
+ android:showAsAction="ifRoom"/>
+ <item
android:id="@+id/menu_import_export"
android:title="@string/menu_import_export" />
<item
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 78c1cc7..71859f0 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -19,7 +19,8 @@
parent="android:Theme.Quantum.Light">
<item name="android:textColorPrimary">@color/dialtacts_primary_text_color</item>
<item name="android:textColorSecondary">@color/dialtacts_secondary_text_color</item>
- <item name="android:windowActionBarOverlay">false</item>
+ <item name="android:windowActionBarOverlay">true</item>
+ <item name="android:windowActionModeOverlay">true</item>
<item name="android:actionBarStyle">@style/DialtactsActionBarStyle</item>
<!-- Style for the tabs (for the tabs) -->
<item name="android:actionBarTabStyle">@style/DialtactsActionBarTabStyle</item>
@@ -29,8 +30,6 @@
<item name="android:actionBarTabTextStyle">@style/DialtactsActionBarTabTextStyle</item>
<!-- Style for the overflow button in the actionbar. -->
<item name="android:actionOverflowButtonStyle">@style/DialtactsActionBarOverflow</item>
- <!-- The "Up" icon in the action bar. -->
- <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
<item name="android:windowContentOverlay">@null</item>
<!-- Searchbox Style -->
<item name="android:editTextStyle">@style/DialtactsSearchboxStyle</item>
@@ -77,23 +76,6 @@
<item name="favorites_padding_bottom">?android:attr/actionBarSize</item>
</style>
- <!-- An extension of the main DialtactsTheme used when the the launcher activity is shown.
- Ensures that there is no actionbar showing during the load of the dialer app. -->
- <style name="DialtactsThemeHiddenActionBar" parent="DialtactsTheme">
- <item name="android:actionBarStyle">@style/DialtactsHiddenActionBarStyle</item>
- </style>
-
- <!-- A "hidden" action bar style. Used when loading the launcher activity so that the
- default actionbar is effectively hidden. -->
- <style name="DialtactsHiddenActionBarStyle" parent="DialtactsActionBarStyle">
- <item name="android:background">@color/background_dialer_light</item>
- <item name="android:titleTextStyle">@style/DialtactsHiddenActionBarTextStyle</item>
- </style>
-
- <style name="DialtactsHiddenActionBarTextStyle" parent="@android:style/TextAppearance">
- <item name="android:textColor">@color/background_dialer_light</item>
- </style>
-
<!-- Action bar overflow menu icon. -->
<style name="DialtactsActionBarOverflow"
parent="@android:style/Widget.Quantum.Light.ActionButton.Overflow">
@@ -104,8 +86,8 @@
<item name="android:textColorPrimary">#FFFFFF</item>
</style>
- <style name="DialtactsThemeWithActionBarOverlay" parent="DialtactsTheme">
- <item name="android:windowActionBarOverlay">true</item>
+ <style name="DialtactsThemeWithoutActionBarOverlay" parent="DialtactsTheme">
+ <item name="android:windowActionBarOverlay">false</item>
</style>
<style name="CallDetailActivityTheme" parent="android:Theme.Quantum.Light">
@@ -114,7 +96,6 @@
<item name="android:listViewStyle">@style/ListViewStyle</item>
<item name="android:actionBarStyle">@style/DialtactsActionBarStyle</item>
<item name="android:actionOverflowButtonStyle">@style/DialtactsActionBarOverflow</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
<!-- CallLog -->
<item name="call_log_primary_text_color">#333333</item>
<item name="call_log_primary_background_color">#FFFFFF</item>
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
new file mode 100644
index 0000000..0e8242d
--- /dev/null
+++ b/res/xml/searchable.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<searchable xmlns:android="http://schemas.android.com/apk/res/android"
+ android:label="@string/applicationLabel"
+ android:hint="@string/dialer_hint_find_contact"
+ android:inputType="textNoSuggestions"
+ android:imeOptions="actionSearch"
+ android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
+ />
\ No newline at end of file