Я пытаюсь изменить цвет значка «вверх» на ActionBar, который я показываю в своем диалоговом окне.Изменение цвета кнопки «Вниз» кнопки «Вниз»
В принципе, у меня есть синий фон на ActionBar. Как только я нажимаю значок поиска, я меняю фон на серый, и это когда я хочу, чтобы стрелка вверх была слишком серой (ее белый в предыдущем случае с синим фоном).
Вот код, когда я изменить цвет фона на поиск щелкнул:
MenuItemCompat.setOnActionExpandListener(searchView,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
mIsSearchViewOpen = true;
ActionBar ab = ((MyActivity) getActivity()).getSupportActionBar();
//Change the ActionBar background color when SearchView is expanded
if (ab != null) {
ab.setDisplayShowHomeEnabled(true);
ab.setDisplayHomeAsUpEnabled(true);
ab.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_gray_rect));
ab.setHomeAsUpIndicator(R.drawable.ic_back_arrow); //this doesn't work. its still white.
}
return true;
}
});
В приведенном выше случае, серый фон применяется как ожидалось, но почему задняя стрелка не отображается? Он все еще белый.
EDIT: я заметил, что это не применяется, когда элемент расширен, но применяется после свертывания поиска. Итак, когда открывается диалог, его белый цвет. Когда я нажимаю на поиск, чтобы развернуть его, он все еще белый. Но когда я ударил это, и поиск рушится, он становится серым.
EDIT: я могу установить панель действий в моем MyActivity
нравится следующим образом:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if(toolbar == null) {
ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
ab.setElevation(0);
}
} else {
setSupportActionBar(toolbar);
}
Кроме того, вот мой toolbar
:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:contentInsetLeft="72dp"
android:contentInsetStart="72dp"
app:contentInsetLeft="72dp"
app:contentInsetStart="72dp"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:theme="@style/MyApp.ThemeOverlay.AppCompat.ActionBar"
app:titleTextAppearance="@style/TextAppearance.MyApp.ActionBar.Title"
tools:ignore="UnusedAttribute">
<ImageView
android:id="@+id/toolbar_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/logo_action_bar"
android:visibility="gone"
tools:ignore="ContentDescription" />
<Spinner
android:id="@+id/spinner_nav"
style="@style/Widget.MyApp.Spinner.DropDown.ActionBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
И это мой theme
, что я применяю в моей панели инструментов выше:
<style name="MyApp.ThemeOverlay.AppCompat.ActionBar" parent="Theme.AppCompat">
<item name="android:homeAsUpIndicator">@drawable/ic_arrow_back</item>
<item name="homeAsUpIndicator">@drawable/ic_arrow_back</item>
</style>
не применяется, когда элемент поиска меню расширен. Он применяется после того, как он рухнет. любая идея почему? – Intern
Как вы устанавливаете свой ActionBar вне этого кода? –
Возможно, вам следует добавить что-то похожее на onMenuItemActionCollapse() –