am 1f111f11: Merge "Searchview layout cleanup. Some more tweaks required for Market." into honeycomb-mr1

* commit '1f111f11721d5d550f45135ba193c465e59a635b':
  Searchview layout cleanup. Some more tweaks required for Market.
This commit is contained in:
Amith Yamasani
2011-03-08 16:36:47 -08:00
committed by Android Git Automerger
2 changed files with 26 additions and 18 deletions

View File

@@ -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;
@@ -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);
@@ -258,6 +260,7 @@ public class SearchView extends LinearLayout {
mSearchable = searchable;
if (mSearchable != null) {
updateSearchAutoComplete();
updateQueryHint();
}
// Cache the voice search capability
mVoiceButtonEnabled = hasVoiceSearch();
@@ -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) {
visibility = VISIBLE;
} else {
visibility = INVISIBLE;
}
if (isSubmitAreaEnabled()
&& (mSubmitButton.getVisibility() == VISIBLE
|| mVoiceButton.getVisibility() == VISIBLE)) {
visibility = VISIBLE;
}
mSubmitArea.setVisibility(visibility);
}
@@ -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);
@@ -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);
}
@@ -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) {

View File

@@ -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 -->