Ustawianie SearchView
ciężkości prawo przez xml lub programowo działa, ale kiedy SearchView
został rozszerzony, to zabierał mały obszar o szerokości po prawej stronie, co nie było zamierzonym wyglądem, jaki miałem na myśli, chciałem, aby zajęło całą szerokość.
Uwaga 1: to rozwiązanie nie pozwoliło na wyświetlenie tytułu, więc dodałem numer TextView
, aby zachować tytuł.
Uwaga 2: Gdy SearchView
została rozszerzona, że to nakładają się na tytuł niestandardowego tak zrobiłem tło SearchView
jako Toolbar, aby uniknąć ukrywać/wykazujące tytuł z SearchView
„s rozwinąć/zwinąć
Tutaj jest to kod Toolbar
:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<TextView
android:id="@+id/toolbar_title"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="Toolbar Title"
android:textColor="@android:color/white" />
<android.support.v7.widget.SearchView
android:id="@+id/search_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="?attr/colorPrimary"
android:gravity="right" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
Wewnątrz aktywności, użyłem blisko i SearchClick słuchaczy, aby wyrównać SearchView
w lewo.
mSearchView = findViewById(R.id.search_view);
mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams) mSearchView.getLayoutParams();
param.removeRule(RelativeLayout.ALIGN_PARENT_LEFT);
//set layout params to cause layout update
mSearchView.setLayoutParams(param);
return false;
}
});
mSearchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams) mSearchView.getLayoutParams();
param.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
//set layout params to cause layout update
mSearchView.setLayoutParams(param);
}
});
thx! Działa idealnie i nie obejmuje mojego tytułu! – meunicorn