2016-04-08 5 views
0

Ich entwickle eine Android App. In meiner App verwende ich die Aktionsleiste unter Verwendung von AppCompactActivity. Ich habe das Suchfeld erfolgreich in der Aktionsleiste implementiert. Aber ich habe ein kleines Problem damit. Ich möchte den Hinweistext im Suchfeld ändern. Überprüfen Sie bitte die Abbildung unten:Wie ändere ich den Hinweistext des Suchfelds in der Aktionsleiste mit dem XML-Menü in Android?

enter image description here

Das ist mein menu.xml mit Suchbegriff

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item android:id="@+id/office_action_search" 
     android:orderInCategory="97" 
     android:title="Search" 
     android:icon="@android:drawable/ic_menu_search" 
     app:showAsAction="always" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 

Dies ist, wie ich als Menü mit Suchfunktion für Aktionsleiste:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.office_main_menu, menu); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

     SearchView search = (SearchView) menu.findItem(R.id.office_action_search).getActionView(); 
     search.setSearchableInfo(manager.getSearchableInfo(getComponentName())); 
     search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       //tabLayout.getTabAt(0).select(); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       return false; 
      } 
     }); 
    } 

    return true; 
} 

Wie kann ich den Hinweistext des Suchfelds ändern?

+0

ändern android: title = "Suchen", um eine andere Zeichenfolge – Stallion

+0

ich es versucht. Aber es funktioniert nicht. –

Antwort

1

Sie setQueryHint den Hinweis des SearchView mit dem Verfahren anpassen können.

Ändern Sie den Code wie folgt aus:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.office_main_menu, menu); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

     SearchView search = (SearchView) menu.findItem(R.id.office_action_search).getActionView(); 
     search.setSearchableInfo(manager.getSearchableInfo(getComponentName())); 
     search.setQueryHint("Your custom hint"); 
     search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       //tabLayout.getTabAt(0).select(); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       return false; 
      } 
     }); 
    } 

    return true; 
} 
+0

Dank. Es funktionierte. Perfekte Antwort. –

0

fügen Sie bitte die folgenden

<style name="SearchViewMy" parent="Widget.AppCompat.Light.SearchView"> 
    <item name="searchHintIcon">@null</item> 
</style> 
+0

Was muss ich dann zuweisen? –

+0

0

Ich habe ein wenig anders. In meinem Fall verwende ich setText Methode von SearchView.SearchAutoComplete auf diese Weise:

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

    final SearchManager searchManager = (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE); 
    final MenuItem searchItem = menu.findItem(R.id.action_search); 
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName())); 

    SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
    searchAutoComplete.setText("Type your music..."); 

    // rest of code 
    ..... 
} 
Verwandte Themen