是否可以根据菜单项的启用/禁用状态定义不同的样式?
例如,我希望菜单项的文本颜色在禁用模式下为灰色,在启用模式下为白色。
我没有成功改变dinamycally颜色,就像许多人没有在stackoverflow上一样。
答案 0 :(得分:1)
这实际上取决于您要自定义的项目。
基本上,您可以根据其状态创建自定义颜色:
<强>颜色/ custom_color.xml:强>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#FF0000" android:state_enabled="false" />
<item android:color="#CCCCCC"/>
</selector>
然后将其设置为您的菜单项:
menu.findItem(R.id.action_search).getActionView().
setBackgroundResource(R.colors/custom_color.xml);
或许在xml中如果可用:
android:textColor="@color/custom_color"
答案 1 :(得分:0)
您可以使用drawable作为文本颜色,而在drawable中,您可以使用selector根据启用状态选择颜色。使用以下可绘制定义作为颜色将使禁用的菜单项变为灰色,其余为黑色。
In e.g. res/drawable/default_text_colour.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@android:color/darker_gray"/>
<item android:color="@android:color/white"/>
</selector>
然后,使用drawable:
<item name="android:textColor">@drawable/default_text_colour</item>
答案 2 :(得分:0)
使用:
<style name="Theme.WordsTrainer" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
我添加了以下行:
<item name="android:textColor">?android:attr/textColorPrimary</item>
到 themes.xml 和 night\themes.xml,这适用于白天和黑夜模式。
我花了一天的时间挖掘它,终于在明显的地方找到了答案: https://developer.android.com/guide/topics/ui/look-and-feel/darktheme
答案 3 :(得分:-1)
对于其他人可能需要:使用ToolBar而不是ActionBar,添加TextView并将样式设置为MenuItem:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_explorer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/CustomActionBar.Theme"
android:background="@mipmap/bg_naviber">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/title_activity_explorer2"
android:layout_gravity="start"
android:padding="@dimen/dimen_8"
style="@style/CustomActionBar.Tittle"
/>
<TextView
android:id="@+id/toolbar_delete"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:text="@string/action_delete"
android:textColor="@drawable/selector_text_view"
android:padding="@dimen/dimen_16"
style="@style/CustomActionBar.Menu"
/>
<TextView
android:id="@+id/toolbar_do_delete"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:text="@string/action_do_delete"
android:textColor="@drawable/selector_text_view"
android:padding="@dimen/dimen_16"
style="@style/CustomActionBar.Menu"
android:visibility="gone"
/>
</android.support.v7.widget.Toolbar>
通过选择器设置textColor:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
>
<!-- order is important -->
<item android:state_enabled="false" android:color="@color/white_disabled"/>
<item android:state_pressed="true" android:color="@color/white"/>
<item android:color="@color/white"/>
</selector>