2016-10-20 3 views
2

Как изменить цвет значка панели инструментов? Я хочу, чтобы он был белого цвета. Я изменил свой собственный белый, но результат все еще черный. Я прочитал this post, но проблема с сообщением - цвет текста, а не цвет значка.Изменить панель инструментов Не скрытый значок меню Цвет

ScreenShot

enter image description here

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context="com.zihadrizkyef.project_katalog_grosirmukenalukis_admin.MainActivity" 

    android:id="@+id/activity_home" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/myToolbar" 
     android:layout_height="?android:attr/actionBarSize" 
     android:layout_width="match_parent" 
     android:background="@color/colorPrimary" 
     android:theme="@style/myToolbarTheme"/> 

    <ListView 
     android:id="@+id/lvProduct" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

style.xml

<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 

     <item name="android:buttonStyle">@style/MyButtonStyle</item> 
    </style> 

    <style name="MyButtonStyle" parent="Base.Widget.AppCompat.Button"> 
     <item name="android:textAllCaps">false</item> 
     <item name="android:background">@drawable/mybutton</item> 
     <item name="android:textColor">@color/myWidgetContentColor</item> 
    </style> 

    <style name="myToolbarTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:textColorPrimary">@color/myWidgetContentColor</item> 
    </style> 
</resources> 

menu_home.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     app:showAsAction="always" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     android:title="Search" 
     android:icon="@drawable/ic_action_search"/> 
</menu> 
+1

вы можете показать свой файл меню? – himanshu1496

+0

Вы пробовали, указав цвет оттенка на этот значок? –

+0

Можно ли заменить это mToolBarTheme в стиле и проверить? <Стиль = имя родителя "myToolbarTheme" = ""> \t <имя элемента = "андроид: тема"> @ стиль/ThemeOverlay.AppCompat.Dark.ActionBar \t <имя элемента = "popupTheme"> @ стиль/ThemeOverlay. AppCompat.Light <имя элемента = "андроид: popupMenuStyle"> \t @ стиль/ThemeOverlay.AppCompat.Dark <имя элемента = "андроид: actionMenuTextColor"> \t @ цвет/белый \t – ImGenie

ответ

1

Прежде всего, необходимо создать свое собственное меню, а затем разместить свой собственный значок в меню.

<menu 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" 
tools:context="com.bruce.example.search.SearchActivity"> 
<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    app:showAsAction="never" /> 
<item 
    android:id="@+id/action_search" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    android:icon="@drawable/ic_search" 
    app:showAsAction="always" /> 

Тогда просто перезаписать onCreateOptionsMenu, чтобы надуть пользовательское меню.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_search, menu); 
    return true; 
} 

Позвольте мне знать, если у вас есть какие-либо проблемы с этим

+0

Спасибо. Но, простите, я сделал это, я забыл рассказать об этом в сообщении. – zihadrizkyef

+0

Я использую свой собственный значок PNG с белым цветом, но результат черный – zihadrizkyef

1

положить следующий код в onCreateOptionsMenu вашей деятельности (в).

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_home, menu); 
     MenuItem favoriteItem = menu.findItem(R.id.action_search); 
     Drawable newIcon = (Drawable)favoriteItem.getIcon(); 
     newIcon.mutate().setColorFilter(Color.argb(255, 200, 200, 200), PorterDuff.Mode.SRC_IN); 
     favoriteItem.setIcon(newIcon); 
     return true; 
    } 

Вы можете дать свой собственный цвет {Color.argb (255, 200, 200, 200)}

0

создать XML-файл, вы можете назвать его ic_action_search_white, используя оттенок, чтобы изменить цвет значка ,

<?xml version="1.0" encoding="utf-8"?> 
<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/ic_action_search" 
    android:tint="@color/white"/> 

Затем в пункте меню устанавливается android:icon="@drawable/ic_action_search_white", то рисуем является файл XML только что создали. Или вы можете программно установить значок yourSearchMenuItem.setIcon(R.drawable.ic_action_search_white)

Позвольте мне знать, если он работает

+0

все еще не работает :( – zihadrizkyef

0

Измените ваш AppTheme ниже:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 

    <item name="android:buttonStyle">@style/MyButtonStyle</item> 
</style> 

делает его темным actionBar будет решить вашу проблему значок меню цвета.

Последнее обновление: Добавлено windowNoTitle 0 как: true.

+0

Я использую панель инструментов v7, она дает мне 'java.lang.IllegalStateException: эта активность уже имеет панель действий в окне decor. Не запрашивайте Window.FEATURE_SUPPORT_ACTION_BAR и установите для окна WindowActionBar значение false в вашей теме, чтобы вместо этого использовать панель инструментов. ' – zihadrizkyef

+0

Хорошо, вы добавили ' false' в свой стиль 'AppTheme' как упомянутый в ответе, и если тема для выше Lollipop, то добавьте ' false'. – himanshu1496

+0

О, извините, я не видел ' false 'После того, как я положил его, я получил ошибку' java.lang.IllegalArgumentException: AppCompat не поддерживает текущие функции темы: { windowActionBar: false, windowActionBarOverlay: false, android: windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false} ' – zihadrizkyef

1

я получил ответ:

main_activity.xml

<android.support.v7.widget.Toolbar 
    android:id="@+id/myToolbar" 
    android:layout_height="?android:attr/actionBarSize" 
    android:layout_width="match_parent" 
    android:background="@color/colorPrimary" 
    android:theme="@style/myToolbarTheme"/> 

стиль.xml

<style name="myToolbarTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorControlNormal">#fff</item> 
</style> 
+0

Тем не менее, если вы не хотите менять тему и меняете только цвет searchView, вы можете попробовать мой ответ;) – MashukKhan

0

Добавить следующий метод, в котором объявляется searchView.

public Drawable changeDrawableTint(Drawable drawable, int color){ 
    final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); 
    DrawableCompat.setTintList(wrappedDrawable, ColorStateList 
      .valueOf(color)); 
    return wrappedDrawable; 
} 

Теперь эти две строки, которые вы уже написали

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

Просто добавьте эту строку

// To change the color of searchView 
searchItem.setIcon(changeDrawableTint(searchItem.getIcon(), Color.WHITE)); 
Смежные вопросы