webentwicklung-frage-antwort-db.com.de

So entfernen Sie weiße Unterstreichung in einem SearchView-Widget in der Symbolleiste Android

Ich verwende das Toolbar-Such-Widget in meinem Projekt. Alles funktioniert einwandfrei, aber ich kann es kaum erwarten, die Unterstreichung unter dem Suchfeld in meiner Symbolleiste zu entfernen. Ich habe viele Lösungen ausprobiert und nichts funktioniert. Im Folgenden sind einige der Lösungen aufgeführt, die ich ausprobiert habe.

Voraussetzung ist, dass die weiße Unterstreichung im Bild entfernt wird

enter image description here

Ist Lösung:

//Removing underline

    int searchPlateId = searchView.getContext().getResources().getIdentifier("Android:id/search_plate", null, null);
    View searchPlate = searchView.findViewById(searchPlateId);
    if (searchPlate!=null) {
        searchPlate.setBackgroundColor (Color.TRANSPARENT);
        int searchTextId = searchPlate.getContext ().getResources ().getIdentifier ("Android:id/search_src_text", null, null);

    }

II. Lösung:

 EditText searchEdit = ((EditText)searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text));
 searchEdit.setBackgroundColor(Color.TRANSPARENT);

Der obige Code dient zum Ändern des Hintergrunds von EditText. Die Unterstreichung wird jedoch unterhalb des Schließsymbols in SearchBar angezeigt.

Vervollständigen Sie den Code, den ich für das SearchBar-Widget verwende, wie folgt:

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater infl) {
        super.onCreateOptionsMenu(menu, infl);
        MenuInflater inflater = getActivity().getMenuInflater();
        inflater.inflate(R.menu.action_search, menu);
        final SearchView searchView = (SearchView) MenuItemCompat
                .getActionView(menu.findItem(R.id.search));

        SearchManager searchManager = (SearchManager) getActivity ().getSystemService (getActivity ().SEARCH_SERVICE);
        searchView.setSearchableInfo (searchManager.getSearchableInfo (getActivity ().getComponentName ()));

        //changing edittext color
        EditText searchEdit = ((EditText)searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text));
        searchEdit.setTextColor(Color.WHITE);
}

action_search.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:compat="http://schemas.Android.com/apk/res-auto">
    <item Android:id="@+id/search"
        Android:title="Search"
        Android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
        compat:showAsAction="ifRoom|collapseActionView"
        compat:actionViewClass="Android.support.v7.widget.SearchView" />
</menu>

mögliches Duplikat von this

Vielen Dank im Voraus, jede Art von Lösungen und Anregungen wäre für mich sehr nützlich.

45
Chandru

Einmal wie folgt versuchen

View v = searchView.findViewById(Android.support.v7.appcompat.R.id.search_plate);
v.setBackgroundColor(Color.parseColor("here give actionbar color code"));

Hoffe das wird dir helfen.

43
Nagaraju V

Wenn Sie SearchView verwenden, verwenden Sie die API unter 21

Android:queryBackground="@Android:color/transparent"

sie können den folgenden Code verwenden, wenn Sie API 21 oder mehr verwenden

app:queryBackground="@Android:color/transparent"
70
kshitij jain

Oder Sie können dies durch Stile tun:

<style name="SearchViewMy" parent="Widget.AppCompat.Light.SearchView">
    <item name="submitBackground">@color/primaryColor</item>
    <item name="queryBackground">@color/primaryColor</item>
</style>

queryBackground ist ein Attribut für den Abfragehintergrund. Wenn Sie die Sprachsuche unterstützen, möchten Sie möglicherweise die Leitung auch unter dieser Mikrofontaste entfernen. Das ist, wofür submitBackground Attribut ist.

Dann wenden Sie den Stil natürlich auf Ihr Thema an.

<style name="Theme.App" parent="Theme.AppCompat.Light.NoActionBar.FullScreen">
    <item name="searchViewStyle">@style/SearchViewMy</item>
</style>
39
Tomask

Fügen Sie einfach diese Zeile hinzu, wenn Sie ein v7-Widget verwenden

app:queryBackground="@Android:color/transparent"
12

Sie können versuchen, den folgenden Code zu verwenden, funktioniert wie ein Zauber für mich.

View v = searchView.findViewById(Android.support.v7.appcompat.R.id.search_plate);
    v.setBackgroundColor(ContextCompat.getColor(context,Android.R.color.transparent));
6
ranasaha

Für AndroidX habe ich dies basierend auf anderen Antworten hier verwendet,

mSearchView.findViewById(androidx.appcompat.R.id.search_plate)
        .setBackgroundColor(Color.TRANSPARENT);
3
Ebrahim Byagowi

Der Code zum Ändern der Hintergrundfarbe von SearchView-Bearbeitungstext ist unten aufgeführt

public static void setSearchViewEditTextBackgroundColor(Context context, SearchView searchView, int backgroundColor){
    int searchPlateId = context.getResources().getIdentifier("Android:id/search_plate", null, null);
    ViewGroup viewGroup = (ViewGroup) searchView.findViewById(searchPlateId);
    viewGroup.setBackgroundColor(ComponentUtils.getColor(context, backgroundColor));
}

Wenn die Hintergrundfarbe Ihrer Aktionsleiste weiß ist, rufen Sie die obige Methode wie folgt auf.

setSearchViewEditTextBackgroundColor(this, searchView, R.color.white);

Jetzt verschwindet die Unterstreichung von SearchView-Bearbeitungstext.

1
Siddarth Kanted

Zuerst sollten Sie das Endergebnis einfach so erhalten:

searchPlate = (View) findViewById(R.id.search_plate);

Dann sollten Sie die Hintergrundfarbe wie folgt auf transparent setzen:

searchPlate.setBackgroundColor(Color.TRANSPARENT);

Dies funktioniert perfekt für androidx.appcompat.widget.SearchView!

0
Ali Najafi