我怎样才能改变ColorPrimaryDark只是一个活动?

我想改变一个活动的ColorPrimaryDark的颜色。 我该怎么做?

我认为去styles.xml和改变这一点:

<item name="colorPrimaryDark">@color/blue</item> 

但问题是,如果我这样做,我改变了我的所有活动的颜色,我只需要改变一个活动的颜色。

感谢您的帮助!

具体来说,这个颜色是应用程序顶部栏的颜色,我的意思是上面的ActionBar 。 我使用Kotlin来做到这一点。

专门为该Activity 创建一个主题 。

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimaryDark">@color/gray</item> <!-- Your application theme --> </style> <style name="BlueActivityTheme" parent="AppTheme"> <item name="colorPrimaryDark">@color/blue</item> </style> 

然后在您的清单中,将主题应用于该Activity

 <activity android:name="com.example.app.BlueActivity" android:theme="@style/BlueActivityTheme"/> 

在您的活动中添加以下代码以编程方式设置状态栏颜色:

 getWindow.setStatusBarColor(getResources().getColor(R.color.your_color)); 

另外,您可以通过在styles.xml文件中编写主题来设置状态栏颜色:

 <style name="YourActivityTheme" parent="AppTheme"> <item name="colorPrimaryDark">@color/yourColor</item> </style> 

然后在清单文件中,你必须添加下面的代码:

 <activity android:name="packageName.YourActivity" android:theme="@style/YourActivityTheme"/> 

你必须创建自己的主题。 请注意,我在styles.xml命名为MyTheme中添加了一个新主题,并将colorPrimaryDark设置为lightGreen

 <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </style> <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimaryDark">@color/lightGreen</item> </style> </resources> 

现在在manifest.xml中 ,您必须在activity标签上设置您的主题。 不要在application标签中设置主题。

 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" > <activity android:name=".MainActivity" android:theme="@style/AppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".OtherActivity1" android:theme="@style/MyTheme" /> <activity android:name=".OtherActivity2" android:theme="@style/AppTheme" /> <activity android:name=".OtherActivity3" android:theme="@style/AppTheme" /> </application> 

现在,你可以看到我已经在OtherActivity1上设置了自定义主题MyTheme 。 对于其余的活动,我将主题设置为默认主题。 希望它有帮助。

在/res/value/styles.xml中,您可以根据需要定义多种样式,然后在活动布局xml的根项目上使用:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/MySecondStyle" .... 

风格也可以在清单中分配。

即使您只能使用主题属性为一个View或一个ViewGroup更改样式,例如:

  <TextView android:theme="@style/MyThirdStyle" .....