it-swarm.com.de

Android SearchView-Symbol

Ich möchte das Mag-Symbol deaktivieren, das in der Suchansichtskomponente angezeigt wird. Haben Sie eine Idee, wie Sie darauf verweisen und es entfernen oder durch ein anderes Zeichen ersetzen können?

enter image description here

29
Harsha M V

In deinem Thema:

<style name="Theme" parent="Your parent theme">
<item name="Android:searchViewSearchIcon">@Android:drawable/ic_search</item>
</style>

Bearbeiten:
searchViewSearchIcon ist ein privates Attribut. Diese Antwort funktioniert daher nicht (auf der nativen ActionBar).

6
Ahmad

Da der Wortlaut der Frage keine Erwähnung von ActionBarSherlock enthält (mit Ausnahme des Tags) und es wurden Kommentare hinzugefügt, dass die akzeptierte Antwort für die Standard- und/oder Unterstützungsbibliothek-Aktionsleiste nicht funktioniert, poste ich eine weitere Antwort. Hier ist der Java-Code für onCreate:

// obtain action bar
ActionBar actionBar = getSupportActionBar();

// find SearchView (im my case it's in a custom layout because of left alignment)
View v = actionBar.getCustomView();
SearchView searchView = (SearchView)v.findViewById(R.id.search_view);
ImageView icon = (ImageView)searchView.findViewById(Android.support.v7.appcompat.R.id.search_mag_icon);

// method 1: does not work persistently, because the next line
// should be probably called after every manipulation with SearchView
// icon.setVisibility(View.GONE);

// method 2: working code
icon.setAdjustViewBounds(true);
icon.setMaxWidth(0);
icon.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
icon.setImageDrawable(null);

Gemäß diesem post wird bei Verwendung einer SearchView aus der Support-Bibliothek (Android-support-v7-appcompat in meinem Fall) mit setIconifiedByDefault(false) das Symbol außerhalb der Editier-Textbox (SearchAutoComplete) angezeigt. Ansonsten (setIconifiedByDefault(true)) wird es in der Box angezeigt. Der dargestellte Code wird standardmäßig für die Deaktivierung der "Symbolisierung" verwendet und erfordert möglicherweise einige Änderungen, um mit der "ikonifizierten" Suchansicht zu arbeiten. Ich weiß nicht, ob dasselbe für ActionBarSherlock gilt.

Hoffe das hilft.

14
Stan

Dieses Symbol ist ein Hinweis. So können Sie einfach neuen Hinweistext setzen.

int searchPlateId = searchView.getContext().getResources().getIdentifier("Android:id/search_src_text", null, null);
    EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);

    searchPlate.setHint("Search");

Wenn Sie ein Symbol als Hinweistext verwenden möchten, verwenden Sie in ImageSpan eine spanbare Zeichenfolge

int searchPlateId = searchView.getContext().getResources().getIdentifier("Android:id/search_src_text", null, null);
    EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);


    searchPlate.setTextColor(getResources().getColor(R.color.search_text_color));
    SpannableString string = new SpannableString(" ");
    Drawable d = getResources().getDrawable(R.drawable.ic_search);
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
    ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);
    string.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    searchPlate.setHint(string);

So entfernen Sie die Hint-Suchschaltfläche:

mNearMeSearchBar = (SearchView) mView.findViewById(R.id.nearme_search_component_nearme_edittext);
mNearMeSearchBar.setIconifiedByDefault(false); //Removes Search Hint Icon

So ändern Sie die Suchschaltfläche:

int searchImgId = getResources().getIdentifier("Android:id/search_mag_icon", null, null);
ImageView v = (ImageView) mNearMeSearchBar.findViewById(searchImgId);
v.setImageResource(R.drawable.ic_compass);
2
Mariana

Sie müssen diese Zeile in Ihr MenuItem Android:iconifiedByDefault="@Android:color/transparent" einfügen.

<item
    Android:id="@+id/activity_home_action_search"
    Android:icon="@drawable/ic_action_search"
    Android:title="@string/activity_home_search_title"
    Android:iconifiedByDefault="@Android:color/transparent"
    app:actionViewClass="Android.support.v7.widget.SearchView"
    app:showAsAction="always|collapseActionView" />

Oder Sie können programmgesteuert searchView.setIconifiedByDefault(true); machen

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    getMenuInflater().inflate(R.menu.home, menu);

    MenuItem searchMenuItem = menu.findItem(R.id.activity_home_action_search);

    SearchView searchView = (SearchView) searchMenuItem.getActionView();
    searchView.setIconifiedByDefault(true);
}
2
Cabezas

Sie müssen den SearchView-Stil folgendermaßen anpassen:

<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
    <!-- Search button icon -->
    <item name="searchIcon">@drawable/ic_arrow_back</item>
</style>

Und fügen Sie es dann in Ihre AppTheme ein.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!--   your other colors and styles -->
    <item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>

Und wenden Sie es mit dem Tag style auf Ihre Suchansicht an:

<Android.support.v7.widget.SearchView
            xmlns:Android="http://schemas.Android.com/apk/res/Android"
            xmlns:app="http://schemas.Android.com/apk/res-auto"
            Android:id="@+id/searchView"
            Android:layout_height="wrap_content"
            Android:layout_width="match_parent"
            app:queryHint="@string/search_hint"
            Android:focusable="true"
            Android:focusableInTouchMode="true"
            style="@style/MySearchViewStyle"
            app:iconifiedByDefault="false" />

Ich hoffe es hilft!

2
Isaac Urbina

Diese Linien haben die Lupe entfernt:

    //remove search icon
    mSearchView.setIconifiedByDefault(false);
    ImageView icon = (ImageView) mSearchView.findViewById(Android.support.v7.appcompat.R.id.search_mag_icon);
    icon.setVisibility(View.GONE);
1
fireworks

Wenn Sie die kompatible Bibliothek der Version 7 verwenden, können Sie dies leicht im Design ändern. Fügen Sie in Ihrem Design, das von einem AppCompat-Design ausgeht, eine Zeile wie folgt hinzu:

<item name="searchViewSearchIcon">@drawable/ic_search</item>
1
user486646

Fügen Sie in XML in der Komponente searchView Folgendes hinzu:

app:searchHintIcon="@null"
0
Alex

In Ihrem Designstil Folgendes einschließen:

<style name="YourTheme.Toolbar">
    <item name="searchViewStyle">@style/YourActionBarSearch</item>
    <item name="editTextColor">@color/your_ab_text_color</item>
    <item name="Android:textColorHint">@color/your_ab_hint_color</item>
</style>

Sie können jetzt den Stil der SearchView mit searchViewStyle definieren, und editTextColor legt die Farbe des Textes im Suchfeld fest. Durch die Einstellung von Android:textColorHint legen Sie auch die Farbe des Hinweises fest, z. "Suche...".

<style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView">
    <item name="searchIcon">@drawable/ic_ab_search</item>
    <item name="queryBackground">@null</item>
    <item name="submitBackground">@null</item>
    <item name="searchHintIcon">@null</item>
    <item name="defaultQueryHint">@null</item>
    <item name="closeIcon">@drawable/ic_ab_small_search_close</item>
</style>

Dadurch wird Ihre Suchansicht mehr oder weniger beliebig gestaltet. Das Feld searchIcon ist das Symbol in der Aktionsleiste. Das Feld searchHintIcon ist das kleine Symbol links neben dem Hinweis im Suchfeld , das Sie in Ihrer Frage nachfragen; Setzen Sie ihn auf @null, um das Symbol zu entfernen. Das Feld closeIcon ist das schließende Symbol auf der rechten Seite des Suchfelds.

0
Per Löwgren