bar - search menu android




Come rimuovere la sottolineatura bianca in un widget SearchView in Toolbar Android (5)

Di seguito è riportato il codice per la modifica del colore di sfondo del testo di modifica di SearchView

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));
}

Se il colore di sfondo della barra delle azioni è bianco, chiama il metodo sopra come segue.

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

Ora la sottolineatura dal testo di modifica SearchView scomparirà.

Sto usando il widget di ricerca di Toolbar nel mio progetto. Tutto funziona bene, ma mi aspetto la cosa che sono completamente bloccato con la rimozione della sottolineatura sotto campo di ricerca nella mia barra degli strumenti. Ho provato molte soluzioni e niente funziona. Di seguito sono elencate alcune delle soluzioni che ho provato.

Il requisito è rimuovere la sottolineatura bianca nell'immagine

Soluzione Ist:

//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 Soluzione:

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

Il codice precedente funziona per modificare lo sfondo di EditText, ma è ancora sottolineato viene visualizzato sotto l'icona Chiudi in SearchBar.

Il codice completo che sto utilizzando per il widget SearchBar come segue:

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

possibile duplicato di this

Grazie in anticipo, qualsiasi tipo di soluzione e suggerimento sarebbe molto utile per me.


Il seguente ha risolto perfettamente il problema per me:

android:background="@android:color/transparent"

Puoi provare ad usare il codice seguente, funziona come un incantesimo per me.

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

Se si utilizza SearchView, utilizzare per API inferiore a 21

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

puoi usare sotto il codice se stai usando l'API 21 o più

app:queryBackground="@android:color/transparent"

Basta aggiungere questa linea se stai usando un widget v7

app: queryBackground = "@ Android: colore / trasparente"





android-search