Loading core/java/android/widget/SearchView.java +22 −18 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ public class SearchView extends LinearLayout { private CursorAdapter mSuggestionsAdapter; private View mSearchButton; private View mSubmitButton; private View mSearchPlate; private View mSubmitArea; private ImageView mCloseButton; private View mSearchEditFrame; Loading Loading @@ -190,6 +191,7 @@ public class SearchView extends LinearLayout { 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); mCloseButton = (ImageView) findViewById(R.id.search_close_btn); Loading Loading @@ -258,6 +260,7 @@ public class SearchView extends LinearLayout { mSearchable = searchable; if (mSearchable != null) { updateSearchAutoComplete(); updateQueryHint(); } // Cache the voice search capability mVoiceButtonEnabled = hasVoiceSearch(); Loading Loading @@ -575,19 +578,19 @@ public class SearchView extends LinearLayout { } private void updateSubmitButton(boolean hasText) { mSubmitButton.setVisibility( isSubmitAreaEnabled() ? (hasText ? VISIBLE : INVISIBLE) : GONE); int visibility = GONE; if (isSubmitAreaEnabled() && hasFocus() && (hasText || !mVoiceButtonEnabled)) { visibility = VISIBLE; } mSubmitButton.setVisibility(visibility); } private void updateSubmitArea() { int visibility = GONE; if (isSubmitAreaEnabled()) { if (mSubmitButton.getVisibility() == VISIBLE || mVoiceButton.getVisibility() == VISIBLE) { if (isSubmitAreaEnabled() && (mSubmitButton.getVisibility() == VISIBLE || mVoiceButton.getVisibility() == VISIBLE)) { visibility = VISIBLE; } else { visibility = INVISIBLE; } } mSubmitArea.setVisibility(visibility); } Loading @@ -601,6 +604,11 @@ public class SearchView extends LinearLayout { mCloseButton.getDrawable().setState(hasText ? ENABLED_STATE_SET : EMPTY_STATE_SET); } private void updateFocusedState(boolean focused) { mSearchPlate.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET); mSubmitArea.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET); } private void setImeVisibility(boolean visible) { InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); Loading Loading @@ -851,16 +859,11 @@ public class SearchView extends LinearLayout { * Update the visibility of the voice button. There are actually two voice search modes, * either of which will activate the button. * @param empty whether the search query text field is empty. If it is, then the other * criteria apply to make the voice button visible. Otherwise the voice button will not * be visible - i.e., if the user has typed a query, remove the voice button. * criteria apply to make the voice button visible. */ private void updateVoiceButton(boolean empty) { // If the voice button is to be visible, show it // Else, make it gone if the submit button is enabled, otherwise invisible to // avoid losing the real-estate int visibility = mSubmitButtonEnabled ? GONE : INVISIBLE; if (mVoiceButtonEnabled && !isIconified() && empty) { int visibility = GONE; if (mVoiceButtonEnabled && !isIconified() && (empty || !mSubmitButtonEnabled)) { visibility = VISIBLE; mSubmitButton.setVisibility(GONE); } Loading Loading @@ -958,7 +961,8 @@ public class SearchView extends LinearLayout { } void onTextFocusChanged() { updateCloseButton(); updateViewsVisibility(isIconified()); updateFocusedState(mQueryTextView.hasFocus()); } private boolean onItemClicked(int position, int actionKey, String actionMsg) { Loading core/res/res/layout/search_view.xml +4 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,10 @@ android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_marginLeft="4dip" android:layout_marginRight="4dip" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" android:orientation="horizontal"> <!-- Inner layout contains the app icon, button(s) and EditText --> Loading Loading
core/java/android/widget/SearchView.java +22 −18 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ public class SearchView extends LinearLayout { private CursorAdapter mSuggestionsAdapter; private View mSearchButton; private View mSubmitButton; private View mSearchPlate; private View mSubmitArea; private ImageView mCloseButton; private View mSearchEditFrame; Loading Loading @@ -190,6 +191,7 @@ public class SearchView extends LinearLayout { 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); mCloseButton = (ImageView) findViewById(R.id.search_close_btn); Loading Loading @@ -258,6 +260,7 @@ public class SearchView extends LinearLayout { mSearchable = searchable; if (mSearchable != null) { updateSearchAutoComplete(); updateQueryHint(); } // Cache the voice search capability mVoiceButtonEnabled = hasVoiceSearch(); Loading Loading @@ -575,19 +578,19 @@ public class SearchView extends LinearLayout { } private void updateSubmitButton(boolean hasText) { mSubmitButton.setVisibility( isSubmitAreaEnabled() ? (hasText ? VISIBLE : INVISIBLE) : GONE); int visibility = GONE; if (isSubmitAreaEnabled() && hasFocus() && (hasText || !mVoiceButtonEnabled)) { visibility = VISIBLE; } mSubmitButton.setVisibility(visibility); } private void updateSubmitArea() { int visibility = GONE; if (isSubmitAreaEnabled()) { if (mSubmitButton.getVisibility() == VISIBLE || mVoiceButton.getVisibility() == VISIBLE) { if (isSubmitAreaEnabled() && (mSubmitButton.getVisibility() == VISIBLE || mVoiceButton.getVisibility() == VISIBLE)) { visibility = VISIBLE; } else { visibility = INVISIBLE; } } mSubmitArea.setVisibility(visibility); } Loading @@ -601,6 +604,11 @@ public class SearchView extends LinearLayout { mCloseButton.getDrawable().setState(hasText ? ENABLED_STATE_SET : EMPTY_STATE_SET); } private void updateFocusedState(boolean focused) { mSearchPlate.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET); mSubmitArea.getBackground().setState(focused ? FOCUSED_STATE_SET : EMPTY_STATE_SET); } private void setImeVisibility(boolean visible) { InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); Loading Loading @@ -851,16 +859,11 @@ public class SearchView extends LinearLayout { * Update the visibility of the voice button. There are actually two voice search modes, * either of which will activate the button. * @param empty whether the search query text field is empty. If it is, then the other * criteria apply to make the voice button visible. Otherwise the voice button will not * be visible - i.e., if the user has typed a query, remove the voice button. * criteria apply to make the voice button visible. */ private void updateVoiceButton(boolean empty) { // If the voice button is to be visible, show it // Else, make it gone if the submit button is enabled, otherwise invisible to // avoid losing the real-estate int visibility = mSubmitButtonEnabled ? GONE : INVISIBLE; if (mVoiceButtonEnabled && !isIconified() && empty) { int visibility = GONE; if (mVoiceButtonEnabled && !isIconified() && (empty || !mSubmitButtonEnabled)) { visibility = VISIBLE; mSubmitButton.setVisibility(GONE); } Loading Loading @@ -958,7 +961,8 @@ public class SearchView extends LinearLayout { } void onTextFocusChanged() { updateCloseButton(); updateViewsVisibility(isIconified()); updateFocusedState(mQueryTextView.hasFocus()); } private boolean onItemClicked(int position, int actionKey, String actionMsg) { Loading
core/res/res/layout/search_view.xml +4 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,10 @@ android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center_vertical" android:layout_marginLeft="4dip" android:layout_marginRight="4dip" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" android:orientation="horizontal"> <!-- Inner layout contains the app icon, button(s) and EditText --> Loading