我想仅为一项活动更改ColorPrimaryDark的颜色。我怎么能这样做?
我想转到styles.xml并更改一下:
<item name="colorPrimaryDark">@color/blue</item>
但问题是,如果我这样做,我会改变所有活动的颜色,我只需要改变一个活动的颜色。
感谢您的帮助!
具体来说,这个颜色是应用程序顶部栏的颜色,我的意思是ActionBar
以上。我用Kotlin来做这件事。
答案 0 :(得分:6)
Create a theme专门针对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"/>
答案 1 :(得分:1)
您必须创建自己的主题。请注意,我在名为MyTheme的 styles.xml 中添加了一个新主题,并将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
标记上设置主题。请勿在{{1}}代码中设置主题。
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>
上设置了MyTheme
的自定义主题。对于活动的其余部分,我将主题设置为默认主题。希望它有所帮助。
答案 2 :(得分:0)
在您的活动中添加以下代码,以编程方式设置状态栏颜色:
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"/>
答案 3 :(得分:0)
在/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"
.....