我在使用styles.xml
文件中的CoordinatorLayout / AppBarLayout内的工具栏以及使用23.1.1支持库中的AppCompat时,遇到了问题。
我想要解决的问题:我的活动来自不同的应用项目,所有这些项目都使用Theme.AppCompat.Light.NoActionBar
。有些应用程序具有浅色原色,一切都很好。但是,有些颜色较深,需要在活动的布局文件中的工具栏上设置android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
- 这是我无法做到的,因为其他应用也会使用相同的代码和资源文件。
编辑:我想我现在已经解决了这个问题。保持styles.xml
不变,在活动中我现在继承了actionBarTheme,如下所示(从阅读http://developer.android.com/reference/android/R.styleable.html#Theme_toolbarStyle获得了想法):
<android.support.v7.widget.Toolbar
android:id="@+id/webview_toolbar"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="?attr/actionBarTheme"/>
请参阅以下相关问题和博文:
在阅读了上述所有内容之后,我尝试通过在具有深色原色的应用程序中导出来自Theme.AppCompat.Light.DarkActionBar
(而不是* .NoActionBar)的应用主题来解决我的问题,并应用所有允许操作的样式酒吧走了出于绝望,我甚至试图设置actionBarTheme和actionBarStyle。
我的应用有一个styles.xml
文件,如下所示:
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimaryDark">@color/myDarkRed</item>
<item name="colorPrimary">@color/myRed</item>
<item name="colorAccent">@color/myOrange</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
<item name="actionBarStyle">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
我的活动(源自AppCompatActivity
)的layout.xml
如下所示:
<android.support.v7.widget.Toolbar
android:id="@+id/webview_toolbar"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
不幸的是,我的Activity在工具栏上仍然有深色文本颜色。我做错了什么?
答案 0 :(得分:0)
这对我有用
<style name="MyToolbarTheme">
<!-- Used to tint the back arrow, menu and spinner arrow -->
<item name="colorPrimary">#ffffff</item>
<item name="colorPrimaryDark">#ffffff</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="colorControlNormal">#ff0000</item>
<item name="android:textColor">#ffffff</item>
<item name="android:textColorHighlight">#ffffff</item>
<item name="actionOverflowMenuStyle">@style/CMOptionsMenu</item>
<item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="CMOptionsMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
<item name="android:popupBackground">#ffffff</item>
</style>
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="android:textColor">@android:color/black</item>
</style>
答案 1 :(得分:0)
您可以在工具栏上设置自己的通用样式
class Application extends React.Component {
//constructor(props) {
// super(props);
// this.state = {
// notificationSystem: this.refs.notificationSystem
// };
//}
addNotification(event) {
event.preventDefault();
this.notificationSystem.addNotification({
message: 'Notification message',
level: 'success'
});
}
render() {
var Handler = this.props.currentRoute.get('handler');
return (
<div>
<Nav currentRoute={this.props.currentRoute} links={pages} />
<div className="main">
<Handler />
</div>
<NotificationSystem ref="notificationSystem" />
</div>
);
}
componentDidMount() {
this.state.notificationSystem = this.refs.notificationSystem;
}
componentDidUpdate(prevProps, prevState) {
const newProps = this.props;
if (newProps.pageTitle === prevProps.pageTitle) {
return;
}
document.title = newProps.pageTitle;
}
}
然后在styles.xml中设置从Light或Dark ThemeOverlay ActionBar继承它。