am 6bcbf54f: Merge "Heed the focusability flag in SearchView and set the default to true." into honeycomb

* commit '6bcbf54feed8ca7c1bf9b509f8581684988d45dd':
  Heed the focusability flag in SearchView and set the default to true.
This commit is contained in:
Amith Yamasani
2011-01-25 12:38:40 -08:00
committed by Android Git Automerger
2 changed files with 24 additions and 7 deletions

View File

@@ -214,6 +214,8 @@ public class SearchView extends LinearLayout {
}
});
boolean focusable = true;
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SearchView, 0, 0);
setIconifiedByDefault(a.getBoolean(R.styleable.SearchView_iconifiedByDefault, true));
int maxWidth = a.getDimensionPixelSize(R.styleable.SearchView_maxWidth, -1);
@@ -226,6 +228,11 @@ public class SearchView extends LinearLayout {
}
a.recycle();
a = context.obtainStyledAttributes(attrs, R.styleable.View, 0, 0);
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);
@@ -259,10 +266,18 @@ public class SearchView extends LinearLayout {
/** @hide */
@Override
public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
if (mClearingFocus || isIconified()) return false;
boolean result = mQueryTextView.requestFocus(direction, previouslyFocusedRect);
if (result) updateViewsVisibility(mIconifiedByDefault);
return result;
// Don't accept focus if in the middle of clearing focus
if (mClearingFocus) return false;
// Check if SearchView is focusable.
if (!isFocusable()) return false;
// If it is not iconified, then give the focus to the text field
if (!isIconified()) {
boolean result = mQueryTextView.requestFocus(direction, previouslyFocusedRect);
if (result) updateViewsVisibility(false);
return result;
} else {
return super.requestFocus(direction, previouslyFocusedRect);
}
}
/** @hide */
@@ -527,7 +542,6 @@ public class SearchView extends LinearLayout {
updateCloseButton();
updateVoiceButton(!hasText);
updateSubmitArea();
requestLayout();
}
private boolean hasVoiceSearch() {
@@ -580,7 +594,7 @@ public class SearchView extends LinearLayout {
private void setImeVisibility(boolean visible) {
InputMethodManager imm = (InputMethodManager)
getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
// We made sure the IME was displayed, so also make sure it is closed
// when we go away.
@@ -903,8 +917,8 @@ public class SearchView extends LinearLayout {
}
private void onSearchClicked() {
mQueryTextView.requestFocus();
updateViewsVisibility(false);
mQueryTextView.requestFocus();
setImeVisibility(true);
if (mOnSearchClickListener != null) {
mOnSearchClickListener.onClick(this);

View File

@@ -105,6 +105,7 @@
android:layout_gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
android:src="?android:attr/searchViewCloseIcon"
android:focusable="true"
/>
</LinearLayout>
@@ -127,6 +128,7 @@
android:background="?android:attr/selectableItemBackground"
android:src="?android:attr/searchViewGoIcon"
android:visibility="gone"
android:focusable="true"
/>
<ImageView
@@ -139,6 +141,7 @@
android:src="?android:attr/searchViewVoiceIcon"
android:background="?android:attr/selectableItemBackground"
android:visibility="gone"
android:focusable="true"
/>
</LinearLayout>
</LinearLayout>