SearchView in OptionsMenu nicht die volle Breite
Ich habe einen SearchView die erweitert wird, in meinem OptionsMenu, wenn der Benutzer tippt auf das Symbol "suchen". Aber es erweitert nur in den verfügbaren Platz unter den anderen OptionsMenu Symbole. Auf einem breiten Bildschirm, das ist in Ordnung, aber mit einem engen Raum, es gibt nur Raum, um zu zeigen, 5-10 Zeichen in das Suchfeld ein. Ich will es überlagern sich die anderen icons, wie es für die Android-Kontakte-app. Derzeit Baue ich mit targetSdkVersion = 17. Hoffentlich bin ich etwas fehlt einfach 🙂
(Hinweis Hinzugefügt später: die einzige Lösung, die ich gefunden habe, praktikabel, so weit ist das ausblenden alle Menü-icons, wenn ich will, erweitern Sie das Symbol "suchen". Dies ist konzeptionell einfach. Aber es ist etwas chaotisch, da beim wiederherstellen von ausgeblendeten Symbole, muss man durch eine Reihe von Logik, um herauszufinden, welche Sie wiederherstellen, oder "keep state" - Variablen herum, etc.)
Hier mein xml-Element für das OptionsMenu:
<item
android:id="@+id/menu_search_shallow"
android:title="Search Current Folder"
android:icon="@drawable/ic_btn_search"
android:showAsAction="always|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
Ich habe auch in meiner Haupttätigkeit-code:
@Override
public boolean onCreateOptionsMenu (Menu menu)
{
getMenuInflater().inflate(R.menu.nav_menu, menu);
this.optionsMenu = menu;
MenuItem searchItem = menu.findItem (R.id.menu_search_shallow);
searchItem.setOnActionExpandListener (this);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint (getString (R.string.search_shallow_hint));
searchItem = menu.findItem (R.id.menu_search_deep);
searchItem.setOnActionExpandListener (this);
searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint (getString (R.string.search_deep_hint));
}
und
@Override
public boolean onMenuItemActionExpand(MenuItem item)
{
SearchView searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener (this);
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item)
{
SearchView searchView = (SearchView) item.getActionView();
searchView.setQuery ("", false);
return true;
}
InformationsquelleAutor der Frage Peri Hartman | 2013-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches Problem, dass die search-bar nicht füllen die gesamte Breite,( aber ich hatte keine anderen icons).
Ich löste es, indem Sie in Artikel:
und in layout/my_search_view.xml :
InformationsquelleAutor der Antwort jjung
Anstelle von erstellen eines neuen Layouts habe ich den MaxWidth programmgesteuert in onCreateOptionsMenu():
InformationsquelleAutor der Antwort clu
Aus irgendeinem Grund jjung ' s Lösung hat bei mir nicht funktioniert. Ich hatte, um
android:maxWidth="10000dp"
nur eine wirklich hohe maxWidth, um es zu erweitern, um die volle zur Verfügung stehende Breite.Auch, nur bin ich mit dem support library (v7), und so mein layout Datei sieht wie folgt aus:
Und in meinem Element, ich habe:
Wo
myapp
nur einige beliebige namespace-Attribute Hinzugefügt, die von der Bibliothek unterstützt (siehe Hinzufügen Von Action-Items für mehr details).InformationsquelleAutor der Antwort mchristie
Vielleicht bin ich zu spät, aber dachte, es könnte hilfreich sein für jemanden, der vor dem gleichen Problem wie ich.
in
onCreateOptionsMenu
Ihre Klasse kann dieses problem lösen, aber eine Sache, die wir verstehen müssen.
Wenn Sie wollen einfach nur, um zu zeigen suchen-Menü (auf das klicken des suchen-button) und nicht alle anderen Menüpunkte in der actionbar dann Sie benötigen, um die Suche nach Element als ein erstes Element im Menü Datei. Hier ist ein Beispiel
Und es wird so dargestellt, wie
Klick auf suchen wird gezeigt, wie die volle Breite
Und wenn Sie zu halten suchen, als zweite oder Letzte Element im Menü, dann wird es zeigen, wie diese.
und auf Suche klicken
InformationsquelleAutor der Antwort KishanSolanki124
Es gibt so viele Möglichkeiten, um dieses Problem zu lösen - ich werde nur hinzufügen das ich verwendet habe, in verschiedenen apps.
Habe ich meine custom SearchView (mit einigen anderen Anpassungen), die erstreckt sich android.Unterstützung.v7.- widget.SearchView und um sich zu dehnen, um die volle Breite:
InformationsquelleAutor der Antwort Oleksandr