Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe75749c authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Fix position and size of searchfield and buttons." into honeycomb

parents 772f5600 9b2e302a
Loading
Loading
Loading
Loading
+57 −24
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ public class SearchView extends LinearLayout {
    private CursorAdapter mSuggestionsAdapter;
    private View mSearchButton;
    private View mSubmitButton;
    private View mSubmitArea;
    private ImageView mCloseButton;
    private View mSearchEditFrame;
    private View mVoiceButton;
@@ -92,6 +93,7 @@ public class SearchView extends LinearLayout {
    private boolean mQueryRefinement;
    private boolean mClearingFocus;
    private int mMaxWidth;
    private boolean mVoiceButtonEnabled;

    private SearchableInfo mSearchable;

@@ -187,6 +189,7 @@ public class SearchView extends LinearLayout {
        mQueryTextView.setSearchView(this);

        mSearchEditFrame = findViewById(R.id.search_edit_frame);
        mSubmitArea = findViewById(R.id.submit_area);
        mSubmitButton = findViewById(R.id.search_go_btn);
        mCloseButton = (ImageView) findViewById(R.id.search_close_btn);
        mVoiceButton = findViewById(R.id.search_voice_btn);
@@ -248,6 +251,8 @@ public class SearchView extends LinearLayout {
        if (mSearchable != null) {
            updateSearchAutoComplete();
        }
        // Cache the voice search capability
        mVoiceButtonEnabled = hasVoiceSearch();
        updateViewsVisibility(mIconifiedByDefault);
    }

@@ -513,18 +518,55 @@ public class SearchView extends LinearLayout {
        mIconified = collapsed;
        // Visibility of views that are visible when collapsed
        final int visCollapsed = collapsed ? VISIBLE : GONE;
        // Visibility of views that are visible when expanded
        final int visExpanded = collapsed ? GONE : VISIBLE;
        // Is there text in the query
        final boolean hasText = !TextUtils.isEmpty(mQueryTextView.getText());

        mSearchButton.setVisibility(visCollapsed);
        mSubmitButton.setVisibility(mSubmitButtonEnabled && hasText ? visExpanded : GONE);
        mSearchEditFrame.setVisibility(visExpanded);
        updateSubmitButton(hasText);
        mSearchEditFrame.setVisibility(collapsed ? GONE : VISIBLE);
        updateCloseButton();
        updateVoiceButton(!hasText);
        updateSubmitArea();
        requestLayout();
        invalidate();
    }

    private boolean hasVoiceSearch() {
        if (mSearchable != null && mSearchable.getVoiceSearchEnabled()) {
            Intent testIntent = null;
            if (mSearchable.getVoiceSearchLaunchWebSearch()) {
                testIntent = mVoiceWebSearchIntent;
            } else if (mSearchable.getVoiceSearchLaunchRecognizer()) {
                testIntent = mVoiceAppSearchIntent;
            }
            if (testIntent != null) {
                ResolveInfo ri = getContext().getPackageManager().resolveActivity(testIntent,
                        PackageManager.MATCH_DEFAULT_ONLY);
                return ri != null;
            }
        }
        return false;
    }

    private boolean isSubmitAreaEnabled() {
        return (mSubmitButtonEnabled || mVoiceButtonEnabled) && !isIconified();
    }

    private void updateSubmitButton(boolean hasText) {
        mSubmitButton.setVisibility(
                isSubmitAreaEnabled() ? (hasText ? VISIBLE : INVISIBLE) : GONE);
    }

    private void updateSubmitArea() {
        int visibility = GONE;
        if (isSubmitAreaEnabled()) {
            if (mSubmitButton.getVisibility() == VISIBLE
                    || mVoiceButton.getVisibility() == VISIBLE) {
                visibility = VISIBLE;
            } else {
                visibility = INVISIBLE;
            }
        }
        mSubmitArea.setVisibility(visibility);
    }

    private void updateCloseButton() {
@@ -790,22 +832,14 @@ public class SearchView extends LinearLayout {
     * be visible - i.e., if the user has typed a query, remove the voice button.
     */
    private void updateVoiceButton(boolean empty) {
        int visibility = View.GONE;
        if (mSearchable != null && mSearchable.getVoiceSearchEnabled() && empty
                && !isIconified()) {
            Intent testIntent = null;
            if (mSearchable.getVoiceSearchLaunchWebSearch()) {
                testIntent = mVoiceWebSearchIntent;
            } else if (mSearchable.getVoiceSearchLaunchRecognizer()) {
                testIntent = mVoiceAppSearchIntent;
            }
            if (testIntent != null) {
                ResolveInfo ri = getContext().getPackageManager().resolveActivity(testIntent,
                        PackageManager.MATCH_DEFAULT_ONLY);
                if (ri != null) {
                    visibility = View.VISIBLE;
                }
            }
        // 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) {
            visibility = VISIBLE;
            mSubmitButton.setVisibility(GONE);
        }
        mVoiceButton.setVisibility(visibility);
    }
@@ -825,12 +859,11 @@ public class SearchView extends LinearLayout {
        CharSequence text = mQueryTextView.getText();
        boolean hasText = !TextUtils.isEmpty(text);
        if (isSubmitButtonEnabled()) {
            mSubmitButton.setVisibility(hasText ? VISIBLE : GONE);
            requestLayout();
            invalidate();
            updateSubmitButton(hasText);
        }
        updateVoiceButton(!hasText);
        updateCloseButton();
        updateSubmitArea();
        if (mOnQueryChangeListener != null) {
            mOnQueryChangeListener.onQueryTextChanged(newText.toString());
        }
+30 −22
Original line number Diff line number Diff line
@@ -100,8 +100,8 @@
                android:id="@+id/search_close_btn"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:paddingLeft="4dip"
                android:paddingRight="4dip"
                android:paddingLeft="8dip"
                android:paddingRight="8dip"
                android:layout_gravity="center_vertical"
                android:background="?android:attr/selectableItemBackground"
                android:src="?android:attr/searchViewCloseIcon"
@@ -111,15 +111,22 @@

    </LinearLayout>

    <LinearLayout
        android:id="@+id/submit_area"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/search_go_btn"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
        android:paddingLeft="4dip"
        android:paddingRight="4dip"
            android:paddingLeft="16dip"
            android:paddingRight="16dip"
            android:background="?android:attr/selectableItemBackground"
            android:src="?android:attr/searchViewGoIcon"
            android:visibility="gone"
        />

        <ImageView
@@ -127,10 +134,11 @@
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
        android:paddingLeft="4dip"
        android:paddingRight="4dip"
            android:paddingLeft="16dip"
            android:paddingRight="16dip"
            android:src="?android:attr/searchViewVoiceIcon"
            android:background="?android:attr/selectableItemBackground"
            android:visibility="gone"
        />
    </LinearLayout>
</LinearLayout>