Add style for SearchView

BUG: 6420978
Change-Id: I31d9f7e66c2404388ccbe6d2e43a005deb0b7c25
This commit is contained in:
Alan Viverette
2014-07-02 15:46:04 -07:00
parent 0c116e1573
commit 5dddb70b4e
27 changed files with 238 additions and 222 deletions

View File

@@ -391,6 +391,7 @@ package android {
field public static final int clipOrientation = 16843274; // 0x101020a
field public static final int clipToPadding = 16842987; // 0x10100eb
field public static final int clipToPath = 16843817; // 0x1010429
field public static final int closeIcon = 16843907; // 0x1010483
field public static final int codes = 16843330; // 0x1010242
field public static final int collapseColumns = 16843083; // 0x101014b
field public static final int color = 16843173; // 0x10101a5
@@ -414,6 +415,7 @@ package android {
field public static final int columnDelay = 16843215; // 0x10101cf
field public static final int columnOrderPreserved = 16843640; // 0x1010378
field public static final int columnWidth = 16843031; // 0x1010117
field public static final int commitIcon = 16843911; // 0x1010487
field public static final int compatibleWidthLimitDp = 16843621; // 0x1010365
field public static final int completionHint = 16843122; // 0x1010172
field public static final int completionHintView = 16843123; // 0x1010173
@@ -598,6 +600,7 @@ package android {
field public static final int gestureStrokeType = 16843385; // 0x1010279
field public static final int gestureStrokeWidth = 16843380; // 0x1010274
field public static final int glEsVersion = 16843393; // 0x1010281
field public static final int goIcon = 16843908; // 0x1010484
field public static final int gradientRadius = 16843172; // 0x10101a4
field public static final int grantUriPermissions = 16842779; // 0x101001b
field public static final int gravity = 16842927; // 0x10100af
@@ -951,6 +954,7 @@ package android {
field public static final int publicKey = 16843686; // 0x10103a6
field public static final int queryActionMsg = 16843227; // 0x10101db
field public static final int queryAfterZeroResults = 16843394; // 0x1010282
field public static final int queryBackground = 16843913; // 0x1010489
field public static final int queryHint = 16843608; // 0x1010358
field public static final int quickContactBadgeStyleSmallWindowLarge = 16843443; // 0x10102b3
field public static final int quickContactBadgeStyleSmallWindowMedium = 16843442; // 0x10102b2
@@ -1026,6 +1030,7 @@ package android {
field public static final int scrollbars = 16842974; // 0x10100de
field public static final int scrollingCache = 16843006; // 0x10100fe
field public static final deprecated int searchButtonText = 16843269; // 0x1010205
field public static final int searchIcon = 16843909; // 0x1010485
field public static final int searchKeyphrase = 16843873; // 0x1010461
field public static final int searchKeyphraseId = 16843872; // 0x1010460
field public static final int searchKeyphraseSupportedLocales = 16843874; // 0x1010462
@@ -1037,6 +1042,7 @@ package android {
field public static final int searchSuggestPath = 16843223; // 0x10101d7
field public static final int searchSuggestSelection = 16843224; // 0x10101d8
field public static final int searchSuggestThreshold = 16843373; // 0x101026d
field public static final int searchViewStyle = 16843906; // 0x1010482
field public static final int secondaryProgress = 16843064; // 0x1010138
field public static final int secondaryProgressTint = 16843881; // 0x1010469
field public static final int secondaryProgressTintMode = 16843882; // 0x101046a
@@ -1130,6 +1136,7 @@ package android {
field public static final int strokeLineJoin = 16843816; // 0x1010428
field public static final int strokeOpacity = 16843810; // 0x1010422
field public static final int strokeWidth = 16843811; // 0x1010423
field public static final int submitBackground = 16843914; // 0x101048a
field public static final int subtitle = 16843473; // 0x10102d1
field public static final int subtitleTextAppearance = 16843825; // 0x1010431
field public static final int subtitleTextStyle = 16843513; // 0x10102f9
@@ -1138,6 +1145,7 @@ package android {
field public static final int subtypeLocale = 16843673; // 0x1010399
field public static final int suggestActionMsg = 16843228; // 0x10101dc
field public static final int suggestActionMsgColumn = 16843229; // 0x10101dd
field public static final int suggestionRowLayout = 16843912; // 0x1010488
field public static final int summary = 16843241; // 0x10101e9
field public static final int summaryColumn = 16843426; // 0x10102a2
field public static final int summaryOff = 16843248; // 0x10101f0
@@ -1317,6 +1325,7 @@ package android {
field public static final int visibilityMode = 16843902; // 0x101047e
field public static final int visible = 16843156; // 0x1010194
field public static final int vmSafeMode = 16843448; // 0x10102b8
field public static final int voiceIcon = 16843910; // 0x1010486
field public static final int voiceLanguage = 16843349; // 0x1010255
field public static final int voiceLanguageModel = 16843347; // 0x1010253
field public static final int voiceMaxResults = 16843350; // 0x1010256

View File

@@ -99,6 +99,26 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
*/
private static final String IME_OPTION_NO_MICROPHONE = "nm";
private final SearchAutoComplete mQueryTextView;
private final View mSearchEditFrame;
private final View mSearchPlate;
private final View mSubmitArea;
private final ImageView mSearchButton;
private final ImageView mSubmitButton;
private final ImageView mCloseButton;
private final ImageView mVoiceButton;
private final ImageView mSearchHintIcon;
private final View mDropDownAnchor;
private final int mSearchIconResId;
// Resources used by SuggestionsAdapter to display suggestions.
private final int mSuggestionRowLayout;
private final int mSuggestionCommitIconResId;
// Intents used for voice searching.
private final Intent mVoiceWebSearchIntent;
private final Intent mVoiceAppSearchIntent;
private OnQueryTextListener mOnQueryChangeListener;
private OnCloseListener mOnCloseListener;
private OnFocusChangeListener mOnQueryTextFocusChangeListener;
@@ -108,16 +128,6 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
private boolean mIconifiedByDefault;
private boolean mIconified;
private CursorAdapter mSuggestionsAdapter;
private View mSearchButton;
private View mSubmitButton;
private View mSearchPlate;
private View mSubmitArea;
private ImageView mCloseButton;
private View mSearchEditFrame;
private View mVoiceButton;
private SearchAutoComplete mQueryTextView;
private View mDropDownAnchor;
private ImageView mSearchHintIcon;
private boolean mSubmitButtonEnabled;
private CharSequence mQueryHint;
private boolean mQueryRefinement;
@@ -161,10 +171,6 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
}
};
// For voice searching
private final Intent mVoiceWebSearchIntent;
private final Intent mVoiceAppSearchIntent;
// A weak map of drawables we've gotten from other packages, so we don't load them
// more than once.
private final WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache =
@@ -242,7 +248,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
}
public SearchView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
this(context, attrs, R.attr.searchViewStyle);
}
public SearchView(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -252,22 +258,39 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
public SearchView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.search_view, this, true);
final TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.SearchView, defStyleAttr, defStyleRes);
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
final int layoutResId = a.getResourceId(R.styleable.SearchView_layout, 0);
inflater.inflate(layoutResId, this, true);
mSearchButton = findViewById(R.id.search_button);
mQueryTextView = (SearchAutoComplete) findViewById(R.id.search_src_text);
mQueryTextView.setSearchView(this);
mSearchEditFrame = findViewById(R.id.search_edit_frame);
mSearchPlate = findViewById(R.id.search_plate);
mSubmitArea = findViewById(R.id.submit_area);
mSubmitButton = findViewById(R.id.search_go_btn);
mSearchButton = (ImageView) findViewById(R.id.search_button);
mSubmitButton = (ImageView) findViewById(R.id.search_go_btn);
mCloseButton = (ImageView) findViewById(R.id.search_close_btn);
mVoiceButton = findViewById(R.id.search_voice_btn);
mVoiceButton = (ImageView) findViewById(R.id.search_voice_btn);
mSearchHintIcon = (ImageView) findViewById(R.id.search_mag_icon);
// Set up icons and backgrounds.
mSearchPlate.setBackground(a.getDrawable(R.styleable.SearchView_queryBackground));
mSubmitArea.setBackground(a.getDrawable(R.styleable.SearchView_submitBackground));
mSearchIconResId = a.getResourceId(R.styleable.SearchView_searchIcon, 0);
mSearchButton.setImageResource(mSearchIconResId);
mSubmitButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_goIcon));
mCloseButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_closeIcon));
mVoiceButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_voiceIcon));
mSearchHintIcon.setImageDrawable(a.getDrawable(R.styleable.SearchView_searchIcon));
// Extract dropdown layout resource IDs for later use.
mSuggestionRowLayout = a.getResourceId(R.styleable.SearchView_suggestionRowLayout, 0);
mSuggestionCommitIconResId = a.getResourceId(R.styleable.SearchView_commitIcon, 0);
mSearchButton.setOnClickListener(mOnClickListener);
mCloseButton.setOnClickListener(mOnClickListener);
mSubmitButton.setOnClickListener(mOnClickListener);
@@ -279,6 +302,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
mQueryTextView.setOnItemClickListener(mOnItemClickListener);
mQueryTextView.setOnItemSelectedListener(mOnItemSelectedListener);
mQueryTextView.setOnKeyListener(mTextKeyListener);
// Inform any listener of focus changes
mQueryTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
@@ -288,36 +312,30 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
}
}
});
TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.SearchView, defStyleAttr, defStyleRes);
setIconifiedByDefault(a.getBoolean(R.styleable.SearchView_iconifiedByDefault, true));
int maxWidth = a.getDimensionPixelSize(R.styleable.SearchView_maxWidth, -1);
final int maxWidth = a.getDimensionPixelSize(R.styleable.SearchView_maxWidth, -1);
if (maxWidth != -1) {
setMaxWidth(maxWidth);
}
CharSequence queryHint = a.getText(R.styleable.SearchView_queryHint);
final CharSequence queryHint = a.getText(R.styleable.SearchView_queryHint);
if (!TextUtils.isEmpty(queryHint)) {
setQueryHint(queryHint);
}
int imeOptions = a.getInt(R.styleable.SearchView_imeOptions, -1);
final int imeOptions = a.getInt(R.styleable.SearchView_imeOptions, -1);
if (imeOptions != -1) {
setImeOptions(imeOptions);
}
int inputType = a.getInt(R.styleable.SearchView_inputType, -1);
final int inputType = a.getInt(R.styleable.SearchView_inputType, -1);
if (inputType != -1) {
setInputType(inputType);
}
a.recycle();
boolean focusable = true;
a = context.obtainStyledAttributes(attrs, R.styleable.View, defStyleAttr, defStyleRes);
focusable = a.getBoolean(R.styleable.View_focusable, focusable);
a.recycle();
setFocusable(focusable);
// Save voice intent for later queries/launching
mVoiceWebSearchIntent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
mVoiceWebSearchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -342,6 +360,14 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
updateQueryHint();
}
int getSuggestionRowLayout() {
return mSuggestionRowLayout;
}
int getSuggestionCommitIconResId() {
return mSuggestionCommitIconResId;
}
/**
* Sets the SearchableInfo for this SearchView. Properties in the SearchableInfo are used
* to display labels, hints, suggestions, create intents for launching search results screens
@@ -1046,22 +1072,18 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
return result;
}
private int getSearchIconId() {
TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(com.android.internal.R.attr.searchViewSearchIcon,
outValue, true);
return outValue.resourceId;
}
private CharSequence getDecoratedHint(CharSequence hintText) {
// If the field is always expanded, then don't add the search icon to the hint
if (!mIconifiedByDefault) return hintText;
if (!mIconifiedByDefault) {
return hintText;
}
SpannableStringBuilder ssb = new SpannableStringBuilder(" "); // for the icon
ssb.append(hintText);
Drawable searchIcon = getContext().getDrawable(getSearchIconId());
int textSize = (int) (mQueryTextView.getTextSize() * 1.25);
final Drawable searchIcon = getContext().getDrawable(mSearchIconResId);
final int textSize = (int) (mQueryTextView.getTextSize() * 1.25);
searchIcon.setBounds(0, 0, textSize, textSize);
final SpannableStringBuilder ssb = new SpannableStringBuilder(" "); // for the icon
ssb.append(hintText);
ssb.setSpan(new ImageSpan(searchIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return ssb;
}
@@ -1363,11 +1385,6 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
}
};
@Override
public void onRtlPropertiesChanged(int layoutDirection) {
mQueryTextView.setLayoutDirection(layoutDirection);
}
/**
* Query rewriting.
*/

View File

@@ -64,11 +64,13 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
static final int REFINE_BY_ENTRY = 1;
static final int REFINE_ALL = 2;
private SearchManager mSearchManager;
private SearchView mSearchView;
private SearchableInfo mSearchable;
private Context mProviderContext;
private WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache;
private final SearchManager mSearchManager;
private final SearchView mSearchView;
private final SearchableInfo mSearchable;
private final Context mProviderContext;
private final WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache;
private final int mCommitIconResId;
private boolean mClosed = false;
private int mQueryRefinement = REFINE_BY_ENTRY;
@@ -94,18 +96,18 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
*/
private static final long DELETE_KEY_POST_DELAY = 500L;
public SuggestionsAdapter(Context context, SearchView searchView,
SearchableInfo searchable,
public SuggestionsAdapter(Context context, SearchView searchView, SearchableInfo searchable,
WeakHashMap<String, Drawable.ConstantState> outsideDrawablesCache) {
super(context,
com.android.internal.R.layout.search_dropdown_item_icons_2line,
null, // no initial cursor
true); // auto-requery
super(context, searchView.getSuggestionRowLayout(), null /* no initial cursor */,
true /* auto-requery */);
mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
mSearchView = searchView;
mSearchable = searchable;
mCommitIconResId = searchView.getSuggestionCommitIconResId();
// set up provider resources (gives us icons, etc.)
Context activityContext = mSearchable.getActivityContext(mContext);
final Context activityContext = mSearchable.getActivityContext(mContext);
mProviderContext = mSearchable.getProviderContext(mContext, activityContext);
mOutsideDrawablesCache = outsideDrawablesCache;
@@ -279,8 +281,13 @@ class SuggestionsAdapter extends ResourceCursorAdapter implements OnClickListene
*/
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View v = super.newView(context, cursor, parent);
final View v = super.newView(context, cursor, parent);
v.setTag(new ChildViewCache(v));
// Set up icon.
final ImageView iconRefine = (ImageView) v.findViewById(R.id.edit_query);
iconRefine.setImageResource(mCommitIconResId);
return v;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:drawable="@drawable/ic_clear_search_api_disabled_holo_dark" />
<item
android:drawable="@drawable/ic_clear_search_api_holo_dark" />
</selector>

View File

@@ -16,7 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/textfield_search_selected_holo_dark" />
android:drawable="@drawable/textfield_search_selected_holo_dark" />
<item android:drawable="@drawable/textfield_search_default_holo_dark" />
</selector>

View File

@@ -16,7 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/textfield_search_selected_holo_light" />
android:drawable="@drawable/textfield_search_selected_holo_light" />
<item android:drawable="@drawable/textfield_search_default_holo_light" />
</selector>

View File

@@ -14,9 +14,9 @@
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:autoMirrored="true">
<item android:state_focused="true"
android:drawable="@drawable/textfield_search_right_selected_holo_dark" />
android:drawable="@drawable/textfield_search_right_selected_holo_dark" />
<item android:drawable="@drawable/textfield_search_right_default_holo_dark" />
</selector>

View File

@@ -14,9 +14,9 @@
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:autoMirrored="true">
<item android:state_focused="true"
android:drawable="@drawable/textfield_search_right_selected_holo_light" />
android:drawable="@drawable/textfield_search_right_selected_holo_light" />
<item android:drawable="@drawable/textfield_search_right_default_holo_light" />
</selector>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml
**
** Copyright 2008, 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.
*/
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceSearchResultTitle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="?android:attr/searchResultListItemHeight" />

View File

@@ -22,11 +22,11 @@
android:paddingStart="@dimen/dropdownitem_text_padding_left"
android:paddingEnd="4dip"
android:layout_width="match_parent"
android:layout_height="?android:attr/searchResultListItemHeight" >
android:layout_height="?attr/searchResultListItemHeight" >
<!-- Icons come first in the layout, since their placement doesn't depend on
the placement of the text views. -->
<ImageView android:id="@android:id/icon1"
<ImageView android:id="@id/icon1"
android:layout_width="@dimen/dropdownitem_icon_width"
android:layout_height="48dip"
android:scaleType="centerInside"
@@ -42,11 +42,10 @@
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:src="?attr/searchViewEditQuery"
android:background="?attr/searchViewEditQueryBackground"
android:background="?attr/selectableItemBackground"
android:visibility="gone" />
<ImageView android:id="@android:id/icon2"
<ImageView android:id="@id/icon2"
android:layout_width="48dip"
android:layout_height="48dip"
android:scaleType="centerInside"
@@ -59,31 +58,31 @@
<!-- The subtitle comes before the title, since the height of the title depends on whether the
subtitle is visible or gone. -->
<TextView android:id="@android:id/text2"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceSearchResultSubtitle"
<TextView android:id="@id/text2"
style="?attr/dropDownItemStyle"
android:textAppearance="?attr/textAppearanceSearchResultSubtitle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="29dip"
android:paddingBottom="4dip"
android:gravity="top"
android:layout_toEndOf="@android:id/icon1"
android:layout_toStartOf="@android:id/icon2"
android:layout_toEndOf="@id/icon1"
android:layout_toStartOf="@id/icon2"
android:layout_alignWithParentIfMissing="true"
android:layout_alignParentBottom="true"
android:visibility="gone" />
<!-- The title is placed above the subtitle, if there is one. If there is no
subtitle, it fills the parent. -->
<TextView android:id="@android:id/text1"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceSearchResultTitle"
<TextView android:id="@id/text1"
style="?attr/dropDownItemStyle"
android:textAppearance="?attr/textAppearanceSearchResultTitle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@android:id/icon1"
android:layout_toStartOf="@android:id/icon2"
android:layout_above="@android:id/text2" />
android:layout_toEndOf="@id/icon1"
android:layout_toStartOf="@id/icon2"
android:layout_above="@id/text2" />
</RelativeLayout>

View File

@@ -22,8 +22,7 @@
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
android:orientation="horizontal">
<!-- This is actually used for the badge icon *or* the badge label (or neither) -->
<TextView
@@ -33,21 +32,18 @@
android:gravity="center_vertical"
android:layout_marginBottom="2dip"
android:drawablePadding="0dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorPrimary"
android:visibility="gone"
/>
android:textAppearance="?attr/textAppearanceMedium"
android:textColor="?attr/textColorPrimary"
android:visibility="gone" />
<ImageView
android:id="@+id/search_button"
style="?android:attr/actionButtonStyle"
style="?attr/actionButtonStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:src="?android:attr/searchViewSearchIcon"
android:focusable="true"
android:contentDescription="@string/searchview_description_search"
/>
android:contentDescription="@string/searchview_description_search" />
<LinearLayout
android:id="@+id/search_edit_frame"
@@ -59,7 +55,8 @@
android:layout_marginBottom="4dip"
android:layout_marginStart="8dip"
android:layout_marginEnd="8dip"
android:orientation="horizontal">
android:orientation="horizontal"
android:layoutDirection="locale">
<ImageView
android:id="@+id/search_mag_icon"
@@ -68,9 +65,7 @@
android:scaleType="centerInside"
android:layout_marginStart="@dimen/dropdownitem_text_padding_left"
android:layout_gravity="center_vertical"
android:src="?android:attr/searchViewSearchIcon"
android:visibility="gone"
/>
android:visibility="gone" />
<!-- Inner layout contains the app icon, button(s) and EditText -->
<LinearLayout
@@ -79,8 +74,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:orientation="horizontal"
android:background="?android:attr/searchViewTextField">
android:orientation="horizontal">
<view class="android.widget.SearchView$SearchAutoComplete"
android:id="@+id/search_src_text"
@@ -100,8 +94,7 @@
android:dropDownAnchor="@id/search_edit_frame"
android:dropDownVerticalOffset="0dip"
android:dropDownHorizontalOffset="0dip"
android:contentDescription="@string/searchview_description_query"
/>
android:contentDescription="@string/searchview_description_query" />
<ImageView
android:id="@+id/search_close_btn"
@@ -110,11 +103,9 @@
android:paddingStart="8dip"
android:paddingEnd="8dip"
android:layout_gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
android:src="?android:attr/searchViewCloseIcon"
android:background="?attr/selectableItemBackgroundBorderless"
android:focusable="true"
android:contentDescription="@string/searchview_description_clear"
/>
android:contentDescription="@string/searchview_description_clear" />
</LinearLayout>
@@ -122,8 +113,7 @@
android:id="@+id/submit_area"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="?android:attr/searchViewTextFieldRight">
android:layout_height="match_parent">
<ImageView
android:id="@+id/search_go_btn"
@@ -132,12 +122,10 @@
android:layout_gravity="center_vertical"
android:paddingStart="16dip"
android:paddingEnd="16dip"
android:background="?android:attr/selectableItemBackground"
android:src="?android:attr/searchViewGoIcon"
android:background="?attr/selectableItemBackgroundBorderless"
android:visibility="gone"
android:focusable="true"
android:contentDescription="@string/searchview_description_submit"
/>
android:contentDescription="@string/searchview_description_submit" />
<ImageView
android:id="@+id/search_voice_btn"
@@ -146,13 +134,10 @@
android:layout_gravity="center_vertical"
android:paddingStart="16dip"
android:paddingEnd="16dip"
android:src="?android:attr/searchViewVoiceIcon"
android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackgroundBorderless"
android:visibility="gone"
android:focusable="true"
android:contentDescription="@string/searchview_description_voice"
/>
android:contentDescription="@string/searchview_description_voice" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -894,6 +894,9 @@
<!-- Style for buttons within button bars -->
<attr name="buttonBarButtonStyle" format="reference" />
<!-- Style for the search query widget. -->
<attr name="searchViewStyle" format="reference" />
<!-- Style for segmented buttons - a container that houses several buttons
with the appearance of a singel button broken into segments. -->
<attr name="segmentedButtonStyle" format="reference" />
@@ -910,29 +913,6 @@
<!-- Background to use for toasts -->
<attr name="toastFrameBackground" format="reference" />
<!-- ============================ -->
<!-- SearchView styles and assets -->
<!-- ============================ -->
<eat-comment />
<!-- SearchView dropdown background -->
<attr name="searchDropdownBackground" format="reference" />
<!-- SearchView close button icon -->
<attr name="searchViewCloseIcon" format="reference" />
<!-- SearchView Go button icon -->
<attr name="searchViewGoIcon" format="reference" />
<!-- SearchView Search icon -->
<attr name="searchViewSearchIcon" format="reference" />
<!-- SearchView Voice button icon -->
<attr name="searchViewVoiceIcon" format="reference" />
<!-- SearchView query refinement icon -->
<attr name="searchViewEditQuery" format="reference" />
<!-- SearchView query refinement icon background -->
<attr name="searchViewEditQueryBackground" format="reference" />
<!-- SearchView text field background for the left section -->
<attr name="searchViewTextField" format="reference" />
<!-- SearchView text field background for the right section -->
<attr name="searchViewTextFieldRight" format="reference" />
<!-- Theme to use for Search Dialogs -->
<attr name="searchDialogTheme" format="reference" />
@@ -6799,9 +6779,11 @@
</declare-styleable>
<declare-styleable name="SearchView">
<!-- The layout to use for the search view. -->
<attr name="layout" />
<!-- The default state of the SearchView. If true, it will be iconified when not in
use and expanded when clicked. -->
<attr name="iconifiedByDefault" format="boolean"/>
<attr name="iconifiedByDefault" format="boolean" />
<!-- An optional maximum width of the SearchView. -->
<attr name="maxWidth" />
<!-- An optional query hint string to be displayed in the empty query field. -->
@@ -6810,6 +6792,22 @@
<attr name="imeOptions" />
<!-- The input type to set on the query text field. -->
<attr name="inputType" />
<!-- Close button icon -->
<attr name="closeIcon" format="reference" />
<!-- Go button icon -->
<attr name="goIcon" format="reference" />
<!-- Search icon -->
<attr name="searchIcon" format="reference" />
<!-- Voice button icon -->
<attr name="voiceIcon" format="reference" />
<!-- Commit icon shown in the query suggestion row -->
<attr name="commitIcon" format="reference" />
<!-- Layout for query suggestion rows -->
<attr name="suggestionRowLayout" format="reference" />
<!-- Background for the section containing the search query -->
<attr name="queryBackground" format="reference" />
<!-- Background for the section containing the action (e.g. voice search) -->
<attr name="submitBackground" format="reference" />
</declare-styleable>
<declare-styleable name="Switch">

View File

@@ -2219,6 +2219,15 @@
<public type="attr" name="minimumHorizontalAngle" />
<public type="attr" name="minimumVerticalAngle" />
<public type="attr" name="maximumAngle" />
<public type="attr" name="searchViewStyle" />
<public type="attr" name="closeIcon" />
<public type="attr" name="goIcon" />
<public type="attr" name="searchIcon" />
<public type="attr" name="voiceIcon" />
<public type="attr" name="commitIcon" />
<public type="attr" name="suggestionRowLayout" />
<public type="attr" name="queryBackground" />
<public type="attr" name="submitBackground" />
<public-padding type="dimen" name="l_resource_pad" end="0x01050010" />

View File

@@ -1641,6 +1641,18 @@ please see styles_device_defaults.xml.
<item name="android:minHeight">48dip</item>
</style>
<style name="Widget.Holo.SearchView">
<item name="layout">@layout/search_view</item>
<item name="queryBackground">@drawable/textfield_searchview_holo_dark</item>
<item name="submitBackground">@drawable/textfield_searchview_right_holo_dark</item>
<item name="closeIcon">@drawable/ic_clear_holo_dark</item>
<item name="searchIcon">@drawable/ic_search_api_holo_dark</item>
<item name="goIcon">@drawable/ic_go_search_api_holo_dark</item>
<item name="voiceIcon">@drawable/ic_voice_search_api_holo_dark</item>
<item name="commitIcon">@drawable/ic_commit_search_api_holo_dark</item>
<item name="suggestionRowLayout">@layout/search_dropdown_item_icons_2line</item>
</style>
<style name="Widget.Holo.StackView">
<item name="android:resOutColor">@android:color/holo_blue_light</item>
<item name="android:clickColor">@android:color/holo_blue_light</item>
@@ -2100,6 +2112,18 @@ please see styles_device_defaults.xml.
<item name="android:minHeight">48dip</item>
</style>
<style name="Widget.Holo.Light.SearchView">
<item name="layout">@layout/search_view</item>
<item name="queryBackground">@drawable/textfield_searchview_holo_light</item>
<item name="submitBackground">@drawable/textfield_searchview_right_holo_light</item>
<item name="closeIcon">@drawable/ic_clear_holo_light</item>
<item name="searchIcon">@drawable/ic_search_api_holo_light</item>
<item name="goIcon">@drawable/ic_go_search_api_holo_light</item>
<item name="voiceIcon">@drawable/ic_voice_search_api_holo_light</item>
<item name="commitIcon">@drawable/ic_commit_search_api_holo_light</item>
<item name="suggestionRowLayout">@layout/search_dropdown_item_icons_2line</item>
</style>
<style name="Widget.Holo.Light.StackView">
<item name="android:resOutColor">@android:color/holo_blue_light</item>
<item name="android:clickColor">@android:color/holo_blue_light</item>

View File

@@ -438,6 +438,18 @@ please see styles_device_defaults.xml.
<item name="background">@null</item>
</style>
<style name="Widget.Material.SearchView">
<item name="layout">@layout/search_view</item>
<item name="queryBackground">@drawable/textfield_search_material</item>
<item name="submitBackground">@drawable/textfield_search_material</item>
<item name="closeIcon">@drawable/ic_clear_material</item>
<item name="searchIcon">@drawable/ic_search_api_material</item>
<item name="goIcon">@drawable/ic_go_search_api_material</item>
<item name="voiceIcon">@drawable/ic_voice_search_api_material</item>
<item name="commitIcon">@drawable/ic_commit_search_api_material</item>
<item name="suggestionRowLayout">@layout/search_dropdown_item_icons_2line</item>
</style>
<style name="Widget.Material.SegmentedButton" parent="SegmentedButton">
<item name="background">@drawable/btn_group_holo_dark</item>
</style>
@@ -684,7 +696,7 @@ please see styles_device_defaults.xml.
</style>
<style name="Widget.Material.Toolbar" parent="Widget.Toolbar">
<item name="navigationButtonStyle">@android:style/Widget.Material.Toolbar.Button.Navigation</item>
<item name="navigationButtonStyle">@style/Widget.Material.Toolbar.Button.Navigation</item>
</style>
<style name="Widget.Material.Toolbar.Button.Navigation" parent="Widget.Toolbar.Button.Navigation">
@@ -829,6 +841,7 @@ please see styles_device_defaults.xml.
<style name="Widget.Material.Light.Button.Toggle" parent="Widget.Material.Button.Toggle" />
<style name="Widget.Material.Light.ButtonBar" parent="Widget.Material.ButtonBar"/>
<style name="Widget.Material.Light.ButtonBar.AlertDialog" parent="Widget.Material.ButtonBar.AlertDialog"/>
<style name="Widget.Material.Light.SearchView" parent="Widget.Material.SearchView"/>
<style name="Widget.Material.Light.SegmentedButton" parent="Widget.Material.SegmentedButton">
<item name="background">@drawable/btn_group_holo_light</item>

View File

@@ -229,7 +229,6 @@
<java-symbol type="attr" name="pointerStyle" />
<java-symbol type="attr" name="preferenceFrameLayoutStyle" />
<java-symbol type="attr" name="searchDialogTheme" />
<java-symbol type="attr" name="searchViewSearchIcon" />
<java-symbol type="attr" name="textAppearanceAutoCorrectionSuggestion" />
<java-symbol type="attr" name="textAppearanceEasyCorrectSuggestion" />
<java-symbol type="attr" name="textAppearanceMisspelledSuggestion" />

View File

@@ -377,16 +377,7 @@ please see themes_device_defaults.xml.
<item name="segmentedButtonStyle">@android:style/SegmentedButton</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">@android:drawable/spinner_dropdown_background</item>
<item name="searchViewTextField">@drawable/textfield_searchview_holo_dark</item>
<item name="searchViewTextFieldRight">@drawable/textfield_searchview_right_holo_dark</item>
<item name="searchViewCloseIcon">@android:drawable/ic_clear</item>
<item name="searchViewSearchIcon">@android:drawable/ic_search_api_holo_dark</item>
<item name="searchViewGoIcon">@android:drawable/ic_go</item>
<item name="searchViewVoiceIcon">@android:drawable/ic_voice_search_api_holo_dark</item>
<item name="searchViewEditQuery">@android:drawable/ic_commit_search_api_holo_dark</item>
<item name="searchViewEditQueryBackground">?attr/selectableItemBackground</item>
<item name="searchViewStyle">@style/Widget.Holo.SearchView</item>
<item name="searchDialogTheme">@style/Theme.SearchBar</item>
<!-- PreferenceFrameLayout attributes -->
@@ -511,16 +502,7 @@ please see themes_device_defaults.xml.
<item name="actionModeBackground">@android:drawable/cab_background_top_holo_light</item>
<item name="actionModeSplitBackground">@android:drawable/cab_background_bottom_holo_light</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">@android:drawable/search_dropdown_light</item>
<item name="searchViewTextField">@drawable/textfield_searchview_holo_light</item>
<item name="searchViewTextFieldRight">@drawable/textfield_searchview_right_holo_light</item>
<item name="searchViewCloseIcon">@android:drawable/ic_clear_holo_light</item>
<item name="searchViewSearchIcon">@android:drawable/ic_search_api_holo_light</item>
<item name="searchViewGoIcon">@android:drawable/ic_go_search_api_holo_light</item>
<item name="searchViewVoiceIcon">@android:drawable/ic_voice_search_api_holo_light</item>
<item name="searchViewEditQuery">@android:drawable/ic_commit_search_api_holo_light</item>
<item name="searchViewStyle">@style/Widget.Holo.Light.SearchView</item>
<item name="detailsElementBackground">@android:drawable/panel_bg_holo_light</item>
<item name="mediaRouteButtonStyle">@android:style/Widget.DeviceDefault.Light.MediaRouteButton</item>
@@ -1248,9 +1230,7 @@ please see themes_device_defaults.xml.
<item name="buttonBarButtonStyle">?android:attr/borderlessButtonStyle</item>
<item name="segmentedButtonStyle">@android:style/Holo.SegmentedButton</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">@android:drawable/search_dropdown_dark</item>
<item name="searchViewStyle">@style/Widget.Holo.SearchView</item>
<item name="searchDialogTheme">@style/Theme.Holo.SearchBar</item>
<!-- PreferenceFrameLayout attributes -->
@@ -1591,9 +1571,7 @@ please see themes_device_defaults.xml.
<item name="buttonBarButtonStyle">?android:attr/borderlessButtonStyle</item>
<item name="segmentedButtonStyle">@android:style/Holo.Light.SegmentedButton</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">@android:drawable/search_dropdown_light</item>
<item name="searchViewStyle">@style/Widget.Holo.Light.SearchView</item>
<item name="searchDialogTheme">@style/Theme.Holo.Light.SearchBar</item>
<!-- NumberPicker style-->

View File

@@ -302,7 +302,7 @@ please see themes_device_defaults.xml.
<item name="actionDropDownStyle">@style/Widget.Material.Spinner.DropDown.ActionBar</item>
<item name="actionButtonStyle">@style/Widget.Material.ActionButton</item>
<item name="actionOverflowButtonStyle">@style/Widget.Material.ActionButton.Overflow</item>
<item name="actionOverflowMenuStyle">@android:style/Widget.Material.PopupMenu.Overflow</item>
<item name="actionOverflowMenuStyle">@style/Widget.Material.PopupMenu.Overflow</item>
<item name="actionModeBackground">?attr/colorPrimaryDark</item>
<item name="actionModeSplitBackground">?attr/colorPrimaryDark</item>
<item name="actionModeCloseDrawable">@drawable/ic_cab_done_material</item>
@@ -335,15 +335,7 @@ please see themes_device_defaults.xml.
<item name="segmentedButtonStyle">@style/Widget.Material.SegmentedButton</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">?attr/colorBackground</item>
<item name="searchViewTextField">@drawable/textfield_search_material</item>
<item name="searchViewTextFieldRight">@drawable/textfield_search_material</item>
<item name="searchViewCloseIcon">@android:drawable/ic_clear_material</item>
<item name="searchViewSearchIcon">@android:drawable/ic_search_api_material</item>
<item name="searchViewGoIcon">@android:drawable/ic_go_search_api_material</item>
<item name="searchViewVoiceIcon">@android:drawable/ic_voice_search_api_material</item>
<item name="searchViewEditQuery">@android:drawable/ic_commit_search_api_material</item>
<item name="searchViewStyle">@style/Widget.Material.SearchView</item>
<item name="searchDialogTheme">@style/Theme.Material.SearchBar</item>
<!-- PreferenceFrameLayout attributes -->
@@ -659,7 +651,7 @@ please see themes_device_defaults.xml.
<item name="actionDropDownStyle">@style/Widget.Material.Light.Spinner.DropDown.ActionBar</item>
<item name="actionButtonStyle">@style/Widget.Material.Light.ActionButton</item>
<item name="actionOverflowButtonStyle">@style/Widget.Material.Light.ActionButton.Overflow</item>
<item name="actionOverflowMenuStyle">@android:style/Widget.Material.Light.PopupMenu.Overflow</item>
<item name="actionOverflowMenuStyle">@style/Widget.Material.Light.PopupMenu.Overflow</item>
<item name="actionModeBackground">@drawable/cab_background_top_holo_light</item>
<item name="actionModeSplitBackground">@drawable/cab_background_bottom_holo_light</item>
<item name="actionModeCloseDrawable">@drawable/ic_cab_done_material</item>
@@ -692,15 +684,7 @@ please see themes_device_defaults.xml.
<item name="segmentedButtonStyle">@style/Widget.Material.Light.SegmentedButton</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">?attr/colorBackground</item>
<item name="searchViewTextField">@drawable/textfield_search_material</item>
<item name="searchViewTextFieldRight">@drawable/textfield_search_material</item>
<item name="searchViewCloseIcon">@android:drawable/ic_clear_material</item>
<item name="searchViewSearchIcon">@android:drawable/ic_search_api_material</item>
<item name="searchViewGoIcon">@android:drawable/ic_go_search_api_material</item>
<item name="searchViewVoiceIcon">@android:drawable/ic_voice_search_api_material</item>
<item name="searchViewEditQuery">@android:drawable/ic_commit_search_api_material</item>
<item name="searchViewStyle">@style/Widget.Material.Light.SearchView</item>
<item name="searchDialogTheme">@style/Theme.Material.Light.SearchBar</item>
<!-- NumberPicker style-->