我怎样才能改变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" .....