[英]Can't change the color of toolbar
任何人都可以请,解释我,为什么我的工具栏不会改变它的颜色,即使我创建了另一种风格,如:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">false</item>
</style>
将它添加到我的清单文件中,如:
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
<meta-data
android:theme="@style/AppTheme.NoActionBar"
android:name="android.support.PARENT_ACTIVITY"
android:value="com.com.com.com.MainActivity" />
</activity>
并尝试更改工具栏,如:
Toolbar toolbar = new Toolbar(this);
toolbar.setBackgroundColor(getResources().getColor(R.color.light_blue));
setSupportActionBar(toolbar);
但仍然得到
此活动已经有一个由窗口装饰提供的操作栏。 请勿在主题中请求Window.FEATURE_ACTION_BAR并将windowActionBar设置为false以使用工具栏。
我甚至尝试过getSupportActionBar().hide();
但仍然无法正常工作。
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.com.com.com.SettingsActivity"
android:id="@+id/settings_activity">
</RelativeLayout>
基本上,我想要的是保持我的全局主题,只是在其中一个活动中更改工具栏颜色。 这就是为什么我不在xml文件中创建工具栏,我以编程方式创建它,添加背景颜色并想要设置它。
你需要在meta-data
标签之外取下android:theme="@style/AppTheme.NoActionBar"
:
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:theme="@style/AppTheme.NoActionBar"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="net.noorr.menote.menote.MainActivity" />
</activity>
在java代码中:
Toolbar toolbar = (Toolbar) findViewById(R.id.yourToolbarId);
toolbar.setBackgroundColor(getResources().getColor(R.color.light_blue));
setSupportActionBar(toolbar);
我认为你的工具栏方式错误了。 你可能没有扩展Toolbar
类。 尝试通过xml文件中定义的id直接获取它。
Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar);
然后你可以将它设置为支持并最终设置你的颜色。
编辑 :没有看到你以编程方式创建它。 尝试设置一个简单的AppTheme风格
<style name="NoToolbarStyle" parent="Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
希望以下代码可以帮助您......
在styles.xml中创建主题如下:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
确保你的gradle依赖项中有这个
compile "com.android.support:appcompat-v7:21.0.+"
在布局xml文件中添加此工具栏标记
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="#2196F3"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
在清单文件中,将您创建的主题添加到acctivity中
<activity
android:name="com.javatechig.sample.MyActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
最后,这是你的活动
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
public class MyActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// Set a toolbar to replace the action bar.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}
这可能对你有帮助。
这里的styles.xml
包含自定义主题。
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>
<style name="AppTheme" parent="AppBaseTheme"></style>
<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
AndroidManifest.xml
包含SettingActivity
自定义主题
<activity
android:name=".SettingActivity"
android:label="@string/title_activity_setting"
android:theme="@style/CustomTheme" >
</activity>
Layout
文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/settingRootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.demo.SettingActivity" >
</RelativeLayout>
最后你的活动文件
package com.example.demo;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.RelativeLayout;
@SuppressLint("NewApi")
public class SettingActivity extends AppCompatActivity {
private RelativeLayout rootLayout;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
rootLayout = (RelativeLayout) findViewById(R.id.settingRootLayout);
mToolbar = new Toolbar(this);
mToolbar.setLayoutParams(
new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mToolbar.setBackgroundColor(getResources().getColor(R.color.light_blue));
mToolbar.setFitsSystemWindows(true);
rootLayout.addView(mToolbar);
setSupportActionBar(mToolbar);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.