Merge "Voice search icon replaced by X on typing."

This commit is contained in:
Amith Yamasani
2011-08-16 12:45:08 -07:00
committed by Android (Google) Code Review
4 changed files with 39 additions and 14 deletions

View File

@@ -627,12 +627,33 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
if ((widthMode == MeasureSpec.AT_MOST || widthMode == MeasureSpec.EXACTLY) && mMaxWidth > 0
&& width > mMaxWidth) {
super.onMeasure(MeasureSpec.makeMeasureSpec(mMaxWidth, widthMode), heightMeasureSpec);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
switch (widthMode) {
case MeasureSpec.AT_MOST:
// If there is an upper limit, don't exceed maximum width (explicit or implicit)
if (mMaxWidth > 0) {
width = Math.min(mMaxWidth, width);
} else {
width = Math.min(getPreferredWidth(), width);
}
break;
case MeasureSpec.EXACTLY:
// If an exact width is specified, still don't exceed any specified maximum width
if (mMaxWidth > 0) {
width = Math.min(mMaxWidth, width);
}
break;
case MeasureSpec.UNSPECIFIED:
// Use maximum width, if specified, else preferred width
width = mMaxWidth > 0 ? mMaxWidth : getPreferredWidth();
break;
}
widthMode = MeasureSpec.EXACTLY;
super.onMeasure(MeasureSpec.makeMeasureSpec(width, widthMode), heightMeasureSpec);
}
private int getPreferredWidth() {
return getContext().getResources()
.getDimensionPixelSize(R.dimen.search_view_preferred_width);
}
private void updateViewsVisibility(final boolean collapsed) {
@@ -695,7 +716,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
// 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 && !mExpandedInActionView);
mCloseButton.setVisibility(showClose ? VISIBLE : INVISIBLE);
mCloseButton.setVisibility(showClose ? VISIBLE : GONE);
mCloseButton.getDrawable().setState(hasText ? ENABLED_STATE_SET : EMPTY_STATE_SET);
}
@@ -991,7 +1012,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
*/
private void updateVoiceButton(boolean empty) {
int visibility = GONE;
if (mVoiceButtonEnabled && !isIconified() && (empty || !mSubmitButtonEnabled)) {
if (mVoiceButtonEnabled && !isIconified() && empty) {
visibility = VISIBLE;
mSubmitButton.setVisibility(GONE);
}

View File

@@ -38,7 +38,7 @@
<LinearLayout
android:id="@id/closeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="48dp"
android:orientation="horizontal"
android:focusable="true"
android:background="?android:attr/selectableItemBackground">
@@ -51,9 +51,10 @@
<ImageView
android:id="@+id/search_app_icon"
android:layout_height="48dip"
android:layout_width="48dip"
android:layout_height="32dip"
android:layout_width="32dip"
android:layout_gravity="center_vertical"
android:scaleType="centerInside"
/>
</LinearLayout>

View File

@@ -105,7 +105,7 @@
<ImageView
android:id="@+id/search_close_btn"
android:layout_width="@dimen/dropdownitem_icon_width"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="8dip"
android:paddingRight="8dip"

View File

@@ -125,6 +125,9 @@
<!-- Minimum width of the search view text entry area. -->
<dimen name="search_view_text_min_width">160dip</dimen>
<!-- Preferred width of the search view. -->
<dimen name="search_view_preferred_width">320dip</dimen>
<!-- Dialog title height -->
<dimen name="alert_dialog_title_height">64dip</dimen>
<!-- Dialog button bar height -->
@@ -155,12 +158,12 @@
<dimen name="default_gap">16dip</dimen>
<!-- Text padding for dropdown items -->
<dimen name="dropdownitem_text_padding_left">6dip</dimen>
<dimen name="dropdownitem_text_padding_left">8dip</dimen>
<!-- Text padding for dropdown items -->
<dimen name="dropdownitem_text_padding_right">6dip</dimen>
<dimen name="dropdownitem_text_padding_right">8dip</dimen>
<!-- Width of the icon in a dropdown list -->
<dimen name="dropdownitem_icon_width">48dip</dimen>
<dimen name="dropdownitem_icon_width">32dip</dimen>
</resources>