ActionBar SearchView wird nicht vollständig im Querformat ausgebaut

Bei der Verwendung der Action-Bar-Suchoberfläche wird das Widget erweitert, um die volle Breite des Bildschirms im Hochformat-Modus zu belegen, stoppt aber im Querformat.

Gibt es eine Möglichkeit, die Erweiterungs-Layout-Parameter auf dem SearchView zu setzen, um die Aktionsleiste vollständig zu füllen, wenn der Benutzer eine Suche eingibt?

Siehe Bild: http://i.imgur.com/3z8ZbJA.png

Hinweis: Ich verwende derzeit nicht ActionBar Sherlock

Bearbeiten: Hier ist was ich getan habe, um es zu bekommen, um die volle Breite zu verlängern.

searchView.setOnSearchClickListener(new OnClickListener() { private boolean extended = false; @Override public void onClick(View v) { if (!extended) { extended = true; LayoutParams lp = v.getLayoutParams(); lp.width = LayoutParams.MATCH_PARENT; } } }); 

  • Wie man anruftSucheRequested beim Betätigen von Lupe
  • Zwei searchable.xml Aktivitäten in einem AndroidManifest.xml
  • Wie bekomme ich ein Uri zu einem Bild in meinem Assets, das für die Spalte SearchManager.SUGGEST_COLUMN_ICON_1 funktioniert?
  • SearchView fokussiert beim Ausblenden des ActionBar-Menüs
  • Android SeekBar zur Kontrolle des MediaPlayer-Fortschritts
  • VideoView getCurrentPosition () Unregelmäßigkeit auf Acer Iconia A200
  • Suchen Sie alle Vorkommen eines Strings im gesamten Projekt in Android Studio
  • Ändern der Aktionsleiste Suchansicht Hinweis Textfarbe
  • 6 Solutions collect form web for “ActionBar SearchView wird nicht vollständig im Querformat ausgebaut”

    Hast du so etwas probiert?

     editView.setOnKeyListener(new OnKeyListener() { private boolean extended = false; @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (!extended && event.getAction() == KeyEvent.ACTION_DOWN) { extended = true; LayoutParams lp = v.getLayoutParams(); lp.width = LayoutParams.MATCH_PARENT; } return false; } }); 

    MenuItemCompat's SearchView hat eine Eigenschaft namens maxWidth.

      final MenuItem searchItem = menu.findItem(R.id.action_search); final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); searchView.setMaxWidth(xxx); 

    Verwenden Sie die Bildschirmbreite anstelle von xxx offcourse

    Ich habe eine Lösung für die vollständige Erweiterung der Suchansicht in der Landschaft herausgefunden und auch die Aktionsansicht bereits erweitert, wenn die Aktivität erstellt wird. Hier wie es funktioniert:

    1.First eine XML-Datei in Ihrem Res-Menü-Ordner zum Beispiel: searchview_in_menu.xml erstellen. Hier hättest du den folgenden Code:

      <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_search" android:title="@string/search" android:icon="@android:drawable/ic_menu_search" android:actionLayout="@layout/searchview_layout" /> </menu> 

    Hinweis: "@ string / search" – sieht so etwas in der res-strings.xml aus:

      <string name="search">Search</string> 

    2.Second erstellen Sie das oben genannte Layout ("@ layout / searchview_layout") im Res-Layout-Ordner. Das neue Layout: searchview_layout.xml sieht so aus:

      <?xml version="1.0" encoding="utf-8"?> <SearchView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/search_view_layout" android:layout_width="match_parent" android:layout_height="wrap_content"/> 

    Anmerkung: Hier setzen wir die Suchansichtsbreite auf die Breite des übergeordneten Elements (android: layout_width = "match_parent")

    3.In deiner MainActivity-Klasse oder in der Aktivität, die die Suchansicht implementieren muss, schreiben Sie in der onCreateOptionsMenu () – Methode den folgenden Code:

     @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.searchview_in_menu, menu); //find the search view item and inflate it in the menu layout MenuItem searchItem = menu.findItem(R.id.action_search); mSearchView = (SearchView) searchItem.getActionView(); //set a hint on the search view (optional) mSearchView.setQueryHint(getString(R.string.search)); //these flags together with the search view layout expand the search view in the landscape mode searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_ALWAYS); //expand the search view when entering the activity(optional) searchItem.expandActionView(); return true; } 

    Passen Sie die Breite Layout param auf MATCH_PARENT , so dass die SearchView vollständig erweitern in Porträt oder Landschaft

     ViewGroup.LayoutParams layoutParams = mSearchView.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; 

    Für ActionBarCompat verwenden Sie diese:

      MenuItemCompat.setShowAsAction(searchItem, MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_ALWAYS); MenuItemCompat.expandActionView(searchItem); 

    Benutze das (100%):

     mSearchView = (SearchView) searchItem.getActionView(); mSearchView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.