【发布时间】:2015-04-13 14:34:24
【问题描述】:
我已经阅读了很多关于这个问题的不同帖子,但没有找到任何有效的方法。我希望我的应用与 Android 5.0 及更早版本兼容。
对于 Android 5.0,我正在尝试实现状态栏颜色更改。我知道这不适用于旧版本。但是当我在支持 5.0 的 GenyMotion VM 上运行我的应用程序时,状态栏颜色不会更改为 colorPrimaryDark。它也不会在 Android Studio 的 xml 预览部分改变颜色。
以下是相关文件:
res\values\styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
<!-- Customize your theme here. -->
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryColorDark</item>
<item name="colorAccent">@color/accentColor</item>
</style>
</resources>
res\values-v21\styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:colorPrimary">@color/primaryColor</item>
<item name="android:colorPrimaryDark">@color/primaryColorDark</item>
<item name="android:colorAccent">@color/accentColor</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:statusBarColor">@color/primaryColorDark</item>
</style>
</resources>
res\layout\toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryColor"
>
</android.support.v7.widget.Toolbar>
res\layout\activity_main.xml
<LinearLayout
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:orientation="vertical">
<include
android:id="@+id/tBar"
layout="@layout/toolbar"></include>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
MainActivity.java
public class MainActivity extends ActionBarActivity
{
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar)findViewById(R.id.tBar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Login");
}
...
...
}
可能的问题:
我想我可能在res\values-v21\styles.xml 中添加了一些不必要的项目。
另外,我认为我应该制作 parent = "@android:style/Theme.Material.Light.DarkActionBar" 但其他教程将其命名为 Base.AppTheme。也可能我需要在 MainActivity.java 中添加更多代码
有人可以帮忙吗?这整个话题让我很困惑。
谢谢
【问题讨论】:
-
由于您已经在 AppTheme.Base 中定义了您的应用颜色,因此您无需在样式-v21 上再次定义它们,您实际上可以将样式-v21 留空,它应该可以工作。我确定您的问题是您正在覆盖您已经建立的值
-
很遗憾还是不行……
-
你使用什么作为应用主题?
标签: android android-5.0-lollipop material-design android-toolbar