From 4aedb39a49bda340f871c8fac2239de4fe549b03 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Wed, 15 Dec 2010 16:04:57 -0800 Subject: New SearchView assets and close-button behavior change. Hide the close button in SearchView when there's no text in it and it's not iconified by default. Bug: 3275206 Adds Holo.Light theme and fixes the query refinement icon. --- core/java/android/widget/SearchView.java | 35 +++++++++++++++++---- core/res/res/drawable-hdpi/ic_clear.png | Bin 1945 -> 0 bytes core/res/res/drawable-hdpi/ic_clear_disabled.png | Bin 0 -> 1774 bytes core/res/res/drawable-hdpi/ic_clear_normal.png | Bin 0 -> 1945 bytes core/res/res/drawable-hdpi/ic_clear_off.png | Bin 1774 -> 0 bytes .../ic_clear_search_api_disabled_holo_light.png | Bin 0 -> 1504 bytes .../ic_clear_search_api_holo_light.png | Bin 0 -> 1540 bytes .../ic_commit_search_api_holo_light.png | Bin 0 -> 1307 bytes .../drawable-hdpi/ic_go_search_api_holo_light.png | Bin 0 -> 1252 bytes .../res/drawable-hdpi/ic_search_api_holo_light.png | Bin 0 -> 2271 bytes .../ic_voice_search_api_holo_light.png | Bin 0 -> 1833 bytes core/res/res/drawable-mdpi/ic_clear.png | Bin 1869 -> 0 bytes core/res/res/drawable-mdpi/ic_clear_disabled.png | Bin 0 -> 1623 bytes core/res/res/drawable-mdpi/ic_clear_normal.png | Bin 0 -> 1869 bytes core/res/res/drawable-mdpi/ic_clear_off.png | Bin 1623 -> 0 bytes .../ic_clear_search_api_disabled_holo_light.png | Bin 0 -> 1504 bytes .../ic_clear_search_api_holo_light.png | Bin 0 -> 1540 bytes .../ic_commit_search_api_holo_light.png | Bin 0 -> 1307 bytes .../drawable-mdpi/ic_go_search_api_holo_light.png | Bin 0 -> 1252 bytes .../res/drawable-mdpi/ic_search_api_holo_light.png | Bin 0 -> 2271 bytes .../ic_voice_search_api_holo_light.png | Bin 0 -> 1833 bytes core/res/res/drawable/ic_clear.xml | 22 +++++++++++++ core/res/res/drawable/ic_clear_holo_light.xml | 22 +++++++++++++ .../layout/search_dropdown_item_icons_2line.xml | 4 +-- core/res/res/layout/search_view.xml | 2 +- core/res/res/values/attrs.xml | 4 +++ core/res/res/values/themes.xml | 9 +++++- 27 files changed, 88 insertions(+), 10 deletions(-) delete mode 100644 core/res/res/drawable-hdpi/ic_clear.png create mode 100644 core/res/res/drawable-hdpi/ic_clear_disabled.png create mode 100644 core/res/res/drawable-hdpi/ic_clear_normal.png delete mode 100644 core/res/res/drawable-hdpi/ic_clear_off.png create mode 100644 core/res/res/drawable-hdpi/ic_clear_search_api_disabled_holo_light.png create mode 100644 core/res/res/drawable-hdpi/ic_clear_search_api_holo_light.png create mode 100644 core/res/res/drawable-hdpi/ic_commit_search_api_holo_light.png create mode 100644 core/res/res/drawable-hdpi/ic_go_search_api_holo_light.png create mode 100644 core/res/res/drawable-hdpi/ic_search_api_holo_light.png create mode 100644 core/res/res/drawable-hdpi/ic_voice_search_api_holo_light.png delete mode 100644 core/res/res/drawable-mdpi/ic_clear.png create mode 100644 core/res/res/drawable-mdpi/ic_clear_disabled.png create mode 100644 core/res/res/drawable-mdpi/ic_clear_normal.png delete mode 100644 core/res/res/drawable-mdpi/ic_clear_off.png create mode 100644 core/res/res/drawable-mdpi/ic_clear_search_api_disabled_holo_light.png create mode 100644 core/res/res/drawable-mdpi/ic_clear_search_api_holo_light.png create mode 100644 core/res/res/drawable-mdpi/ic_commit_search_api_holo_light.png create mode 100644 core/res/res/drawable-mdpi/ic_go_search_api_holo_light.png create mode 100644 core/res/res/drawable-mdpi/ic_search_api_holo_light.png create mode 100644 core/res/res/drawable-mdpi/ic_voice_search_api_holo_light.png create mode 100644 core/res/res/drawable/ic_clear.xml create mode 100644 core/res/res/drawable/ic_clear_holo_light.xml diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java index e499e54a7328..1820c3fb0c8f 100644 --- a/core/java/android/widget/SearchView.java +++ b/core/java/android/widget/SearchView.java @@ -18,6 +18,8 @@ package android.widget; import static android.widget.SuggestionsAdapter.getColumnString; +import com.android.internal.R; + import android.app.PendingIntent; import android.app.SearchManager; import android.app.SearchableInfo; @@ -44,14 +46,11 @@ import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; -import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.TextView.OnEditorActionListener; -import com.android.internal.R; - import java.util.WeakHashMap; /** @@ -84,7 +83,7 @@ public class SearchView extends LinearLayout { private CursorAdapter mSuggestionsAdapter; private View mSearchButton; private View mSubmitButton; - private View mCloseButton; + private ImageView mCloseButton; private View mSearchEditFrame; private View mVoiceButton; private SearchAutoComplete mQueryTextView; @@ -189,7 +188,7 @@ public class SearchView extends LinearLayout { mSearchEditFrame = findViewById(R.id.search_edit_frame); mSubmitButton = findViewById(R.id.search_go_btn); - mCloseButton = findViewById(R.id.search_close_btn); + mCloseButton = (ImageView) findViewById(R.id.search_close_btn); mVoiceButton = findViewById(R.id.search_voice_btn); mSearchButton.setOnClickListener(mOnClickListener); @@ -252,7 +251,9 @@ public class SearchView extends LinearLayout { @Override public boolean requestFocus(int direction, Rect previouslyFocusedRect) { if (mClearingFocus || isIconified()) return false; - return mQueryTextView.requestFocus(direction, previouslyFocusedRect); + boolean result = mQueryTextView.requestFocus(direction, previouslyFocusedRect); + if (result) updateViewsVisibility(mIconifiedByDefault); + return result; } /** @hide */ @@ -263,6 +264,7 @@ public class SearchView extends LinearLayout { mQueryTextView.clearFocus(); setImeVisibility(false); mClearingFocus = false; + updateViewsVisibility(mIconifiedByDefault); } /** @@ -515,11 +517,21 @@ public class SearchView extends LinearLayout { mSearchButton.setVisibility(visCollapsed); mSubmitButton.setVisibility(mSubmitButtonEnabled && hasText ? visExpanded : GONE); mSearchEditFrame.setVisibility(visExpanded); + updateCloseButton(); updateVoiceButton(!hasText); requestLayout(); invalidate(); } + private void updateCloseButton() { + final boolean hasText = !TextUtils.isEmpty(mQueryTextView.getText()); + // Should we show the close button? It is not shown if there's no focus, + // field is not iconified by default and there is no text in it. + final boolean showClose = hasText || mIconifiedByDefault || mQueryTextView.hasFocus(); + mCloseButton.setVisibility(showClose ? VISIBLE : INVISIBLE); + mCloseButton.getDrawable().setState(hasText ? ENABLED_STATE_SET : EMPTY_STATE_SET); + } + private void setImeVisibility(boolean visible) { InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); @@ -812,6 +824,7 @@ public class SearchView extends LinearLayout { invalidate(); } updateVoiceButton(!hasText); + updateViewsVisibility(mIconifiedByDefault); if (mOnQueryChangeListener != null) { mOnQueryChangeListener.onQueryTextChanged(newText.toString()); } @@ -882,6 +895,10 @@ public class SearchView extends LinearLayout { } } + void onTextFocusChanged() { + updateCloseButton(); + } + private boolean onItemClicked(int position, int actionKey, String actionMsg) { if (mOnSuggestionListener == null || !mOnSuggestionListener.onSuggestionClicked(position)) { @@ -1283,6 +1300,12 @@ public class SearchView extends LinearLayout { } } + @Override + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + super.onFocusChanged(focused, direction, previouslyFocusedRect); + mSearchView.onTextFocusChanged(); + } + /** * We override this method so that we can allow a threshold of zero, * which ACTV does not. diff --git a/core/res/res/drawable-hdpi/ic_clear.png b/core/res/res/drawable-hdpi/ic_clear.png deleted file mode 100644 index 33ad8d4b891b..000000000000 Binary files a/core/res/res/drawable-hdpi/ic_clear.png and /dev/null differ diff --git a/core/res/res/drawable-hdpi/ic_clear_disabled.png b/core/res/res/drawable-hdpi/ic_clear_disabled.png new file mode 100644 index 000000000000..d97c342d5369 Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_clear_disabled.png differ diff --git a/core/res/res/drawable-hdpi/ic_clear_normal.png b/core/res/res/drawable-hdpi/ic_clear_normal.png new file mode 100644 index 000000000000..33ad8d4b891b Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_clear_normal.png differ diff --git a/core/res/res/drawable-hdpi/ic_clear_off.png b/core/res/res/drawable-hdpi/ic_clear_off.png deleted file mode 100644 index d97c342d5369..000000000000 Binary files a/core/res/res/drawable-hdpi/ic_clear_off.png and /dev/null differ diff --git a/core/res/res/drawable-hdpi/ic_clear_search_api_disabled_holo_light.png b/core/res/res/drawable-hdpi/ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 000000000000..3edbd740858a Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_clear_search_api_disabled_holo_light.png differ diff --git a/core/res/res/drawable-hdpi/ic_clear_search_api_holo_light.png b/core/res/res/drawable-hdpi/ic_clear_search_api_holo_light.png new file mode 100644 index 000000000000..90db01b5bcf1 Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_clear_search_api_holo_light.png differ diff --git a/core/res/res/drawable-hdpi/ic_commit_search_api_holo_light.png b/core/res/res/drawable-hdpi/ic_commit_search_api_holo_light.png new file mode 100644 index 000000000000..b01688fa3225 Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_commit_search_api_holo_light.png differ diff --git a/core/res/res/drawable-hdpi/ic_go_search_api_holo_light.png b/core/res/res/drawable-hdpi/ic_go_search_api_holo_light.png new file mode 100644 index 000000000000..7e1ba2adc627 Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_go_search_api_holo_light.png differ diff --git a/core/res/res/drawable-hdpi/ic_search_api_holo_light.png b/core/res/res/drawable-hdpi/ic_search_api_holo_light.png new file mode 100644 index 000000000000..72e207bc5dc8 Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_search_api_holo_light.png differ diff --git a/core/res/res/drawable-hdpi/ic_voice_search_api_holo_light.png b/core/res/res/drawable-hdpi/ic_voice_search_api_holo_light.png new file mode 100644 index 000000000000..3481c982862c Binary files /dev/null and b/core/res/res/drawable-hdpi/ic_voice_search_api_holo_light.png differ diff --git a/core/res/res/drawable-mdpi/ic_clear.png b/core/res/res/drawable-mdpi/ic_clear.png deleted file mode 100644 index 86944a879b98..000000000000 Binary files a/core/res/res/drawable-mdpi/ic_clear.png and /dev/null differ diff --git a/core/res/res/drawable-mdpi/ic_clear_disabled.png b/core/res/res/drawable-mdpi/ic_clear_disabled.png new file mode 100644 index 000000000000..b9c3b4450568 Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_clear_disabled.png differ diff --git a/core/res/res/drawable-mdpi/ic_clear_normal.png b/core/res/res/drawable-mdpi/ic_clear_normal.png new file mode 100644 index 000000000000..86944a879b98 Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_clear_normal.png differ diff --git a/core/res/res/drawable-mdpi/ic_clear_off.png b/core/res/res/drawable-mdpi/ic_clear_off.png deleted file mode 100644 index b9c3b4450568..000000000000 Binary files a/core/res/res/drawable-mdpi/ic_clear_off.png and /dev/null differ diff --git a/core/res/res/drawable-mdpi/ic_clear_search_api_disabled_holo_light.png b/core/res/res/drawable-mdpi/ic_clear_search_api_disabled_holo_light.png new file mode 100644 index 000000000000..3edbd740858a Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_clear_search_api_disabled_holo_light.png differ diff --git a/core/res/res/drawable-mdpi/ic_clear_search_api_holo_light.png b/core/res/res/drawable-mdpi/ic_clear_search_api_holo_light.png new file mode 100644 index 000000000000..90db01b5bcf1 Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_clear_search_api_holo_light.png differ diff --git a/core/res/res/drawable-mdpi/ic_commit_search_api_holo_light.png b/core/res/res/drawable-mdpi/ic_commit_search_api_holo_light.png new file mode 100644 index 000000000000..b01688fa3225 Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_commit_search_api_holo_light.png differ diff --git a/core/res/res/drawable-mdpi/ic_go_search_api_holo_light.png b/core/res/res/drawable-mdpi/ic_go_search_api_holo_light.png new file mode 100644 index 000000000000..7e1ba2adc627 Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_go_search_api_holo_light.png differ diff --git a/core/res/res/drawable-mdpi/ic_search_api_holo_light.png b/core/res/res/drawable-mdpi/ic_search_api_holo_light.png new file mode 100644 index 000000000000..72e207bc5dc8 Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_search_api_holo_light.png differ diff --git a/core/res/res/drawable-mdpi/ic_voice_search_api_holo_light.png b/core/res/res/drawable-mdpi/ic_voice_search_api_holo_light.png new file mode 100644 index 000000000000..3481c982862c Binary files /dev/null and b/core/res/res/drawable-mdpi/ic_voice_search_api_holo_light.png differ diff --git a/core/res/res/drawable/ic_clear.xml b/core/res/res/drawable/ic_clear.xml new file mode 100644 index 000000000000..f3534964a804 --- /dev/null +++ b/core/res/res/drawable/ic_clear.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/core/res/res/drawable/ic_clear_holo_light.xml b/core/res/res/drawable/ic_clear_holo_light.xml new file mode 100644 index 000000000000..8ba1e3c09a6b --- /dev/null +++ b/core/res/res/drawable/ic_clear_holo_light.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/core/res/res/layout/search_dropdown_item_icons_2line.xml b/core/res/res/layout/search_dropdown_item_icons_2line.xml index fcdf91b21859..53906f94e025 100644 --- a/core/res/res/layout/search_dropdown_item_icons_2line.xml +++ b/core/res/res/layout/search_dropdown_item_icons_2line.xml @@ -42,8 +42,8 @@ android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" - android:src="@android:drawable/edit_query" - android:background="@android:drawable/edit_query_background" + android:src="?attr/searchViewEditQuery" + android:background="?attr/searchViewEditQueryBackground" android:visibility="gone" /> + + + + diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index f0f101e4ad82..87029ef84f22 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -269,6 +269,8 @@ @android:drawable/ic_search @android:drawable/ic_go @android:drawable/ic_voice_search + @android:drawable/ic_commit + ?attr/selectableItemBackground @@ -362,8 +364,13 @@ @android:drawable/ic_menu_paste_light @android:drawable/search_dropdown_light + @android:drawable/ic_clear_holo_light + @android:drawable/ic_search_api_holo_light + @android:drawable/ic_go_search_api_holo_light + @android:drawable/ic_voice_search_api_holo_light + @android:drawable/ic_commit_search_api_holo_light - +