2016-08-30 2 views
2
Eingabe

Ich erkannte SearchView wie Google sagt:Android Suche nicht Text zeigt, wenn

Erstellt searchable.xml in res/xml:

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/app_name" 
    android:hint="Search" 
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" /> 

Erstellt Menüpunkt in res/menu/second_activity_menu:

<item 
    android:id="@+id/second_toolbar_search" 
    android:icon="@mipmap/ic_search_black_24dp" 
    android:orderInCategory="100" 
    android:title="@string/search" 
    app:showAsAction="collapseActionView|ifRoom" 
    app:actionViewClass="android.support.v7.widget.SearchView" /> 

meine AndroidManifest ändern:

<activity android:name=".SecondActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 
    <meta-data 
     android:name="android.app.searchable" 
     android:resource="@xml/searchable" /> 
</activity> 

und erkannte meine SecondActivity Klasse, die AppCompatActivity erweitert:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.second_activity_menu, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.second_toolbar_search).getActionView(); 

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 
    return true; 
} 

Als Folge ich dieses:

Toolbar

Nach clicling auf das Suchsymbol Ich habe diese:

Wenn ich anfange etwas zu tippen, wird es nicht angezeigt und es wird auch kein "clear" Symbol und kein mic Symbol angezeigt. Aber ich habe sie in hinzugefügt.

Vielen Dank für Ideen oder Code.

HINZUFÜGEN: vielleicht ist der Grund mit Symbolleiste Stil?

ADD 2: Symbolleiste, aber ich glaube nicht, dass es nessesary ist

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="?attr/actionBarSize" 
     local:theme="@style/AppTheme" /> 
+0

Haben Sie die Farbe überprüft? –

+0

Haben Sie die Textfarbe überprüft? Es könnte weiß sein. Sie müssen die Textfarbe in Schwarz ändern. –

+0

@ReazMurshed hat nicht geholfen –

Antwort

0

Soweit ich denke, haben Sie Ihre SearchView perfekt funktioniert, aber es ist nicht sichtbar, da die Symbole und Die Textfarbe ist weiß. Also möchte ich Ihnen erzählen, wie Sie die Symbol- und Textfarben Ihrer SearchView ändern können.

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.second_activity_menu, menu); 

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

    // Set text colour 
    SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
    searchAutoComplete.setHintTextColor(Color.WHITE); 
    searchAutoComplete.setTextColor(Color.WHITE); 

    View searchplate = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_plate); 
    searchplate.setBackgroundResource(R.drawable.texfield_searchview_holo_light); 
    // Clear search or close icon 
    ImageView searchCloseIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); 
    searchCloseIcon.setImageResource(R.drawable.clear_search); 

    // Voice icon 
    ImageView voiceIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_voice_btn); 
    voiceIcon.setImageResource(R.drawable.abc_ic_voice_search); 

    // Search icon 
    ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); 
    searchIcon.setImageResource(R.drawable.abc_ic_search); 

    return super.onCreateOptionsMenu(menu); 
} 

Sie schwer, die SearchView von XML anpassen. Befolgen Sie stattdessen die programmierte Lösung.

+0

nein, hat nicht geholfen –

+0

vielleicht Problem mit der Symbolleiste? Vielleicht sollte ich einen anderen Stil verwenden oder ActionBar verwenden. Ich weiß nicht, was los ist –

+0

Sie können auch die Farbe der Toolbar ändern, um zu sehen, was passiert. Die Idee ist, den Kontrast zu machen. –

3

eine Symbolleiste Geben Sie explizit jede layout_height:

<android.support.v7.widget.Toolbar 
    ... 
    android:layout_height="?attr/actionBarSize" 
    ... 
/> 

P. S. Ich habe diese Antwort here gefunden und dafür gestimmt, diese Frage als Duplikat zu schließen.

+0

nein, hat nicht geholfen. –