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

Schreibe einen Kommentar