Czy istnieje sposób, aby lista wyników SearchView zajmowała całą szerokość ekranu? Próbowałem używać niestandardowego układu dla SearchView, ale to nie zmienia szerokości listy wyników wyszukiwania. patrz obrazek:SearchView lista wyników szerokość
Odpowiedz
Tak, jest to możliwe. Aby to osiągnąć, powinniśmy ustawić szerokość całego DropDownView
, nie tylko dla przedmiotów. Możemy ustawić go, dzwoniąc pod numer setDropDownWidth
z AutoCompleteTextView
. Ale jest jeden problem. DropDownView
Szerokość i przesunięcie w poziomie są obliczane wewnątrz SearchView
za każdym razem, gdy zmienia się jego zakres. Aby obejść ten problem, możemy dodać do SearchView
nasze własne OnLayoutChangeListener
, w którym obliczamy i ustawiamy wysokość DropDownView
. Poniższy kod jest w pełni współpracuje z AppCompat
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// inflate our menu
getMenuInflater().inflate(R.menu.search_menu, menu);
// find MenuItem and get SearchView from it
MenuItem searchMenuItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
// id of AutoCompleteTextView
int searchEditTextId = R.id.search_src_text; // for AppCompat
// get AutoCompleteTextView from SearchView
final AutoCompleteTextView searchEditText = (AutoCompleteTextView) searchView.findViewById(searchEditTextId);
final View dropDownAnchor = searchView.findViewById(searchEditText.getDropDownAnchor());
if (dropDownAnchor != null) {
dropDownAnchor.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
// calculate width of DropdownView
int point[] = new int[2];
dropDownAnchor.getLocationOnScreen(point);
// x coordinate of DropDownView
int dropDownPadding = point[0] + searchEditText.getDropDownHorizontalOffset();
Rect screenSize = new Rect();
getWindowManager().getDefaultDisplay().getRectSize(screenSize);
// screen width
int screenWidth = screenSize.width();
// set DropDownView width
searchEditText.setDropDownWidth(screenWidth - dropDownPadding * 2);
}
});
}
return super.onCreateOptionsMenu(menu);
}
Jeśli używasz Holo tylko zmienić linię int searchEditTextId = R.id.search_src_text;
do poniżej jednego:
int searchEditTextId = getResources().getIdentifier("android:id/search_src_text", null, null);
Musisz uzyskać odniesienie do obiektu SearchAutoComplete co w moim przypadku android.support.v7.widget.SearchView za pomocą, a następnie ustawić jego rozmiar, sprawdź moją odpowiedź tutaj:
- 1. SearchView nie wypełnia całą szerokość
- 2. lista wyników mapy jest dłuższa
- 3. format wyjścia z matematyki lista wyników
- 4. WPF: WrapPanel w ItemsPanelTemplate rozszerza szerokość lista
- 5. Android SearchView onclick
- 6. Android SearchView nie działa
- 7. Dodawanie SearchView w Fragmenty
- 8. SearchView użyciu AppCompat
- 9. Android SearchView pusty ciąg
- 10. ActionBarSherlock SearchView cast błąd
- 11. SearchView filtrowanie ListView
- 12. Jak ustawić SearchView TextSize?
- 13. SearchView i klawiatura
- 14. Android SearchView Filter ListView
- 15. Lista błędów w programie Visual Studio pokazuje pustą listę wyników
- 16. Lista <T> .indeksuj dla wielu wyników?
- 17. Wiązanie noża SearchView z Menu
- 18. Wyświetlanie sugestii dla pustego SearchView
- 19. Jak uzyskać tekst z SearchView?
- 20. Rozpocznij nową aktywność od SearchView
- 21. SearchView EditText jest zawsze zerowy
- 22. jak zmienić Androida SearchView tekst
- 23. Uzyskiwanie SearchView z MenuItemCompat (Android)
- 24. Niestandardowy kolor kursora w SearchView
- 25. Android ActionBar: zwijany SearchView z przyciskiem akcji
- 26. SearchView zajmująca całą przestrzeń w nowym ActionBarCompat
- 27. ActionBar SearchView nie w pełni rozwija się w trybie poziomym
- 28. Parsowanie wyników askopenfilenames()?
- 29. Brak wyników wyszukiwania Django Haystack
- 30. Stylizowanie widżetu SearchView przy użyciu biblioteki pomocniczej v21
Myślę, że szerokość wyniku wyszukiwania zależy od szerokości tekstu edycji wyszukiwania – Praveen
@Praveen w moim CursorAdapter I zawyżam widok o szerokości MATCH_PARENt. –
opublikować kod i niestandardowy układ adaptera –