我已经阅读了很多关于这个问题的不同帖子,但没有发现任何有用的信息。我希望我的应用与Android 5.0和旧版本兼容。
对于Android 5.0,我正在尝试实现状态栏颜色更改。我知道这对旧版本不起作用。但是当我在支持5.0的GenyMotion VM上运行我的应用程序时,状态栏颜色不会更改为colorPrimaryDark
。它也不会改变Android Studio的xml
预览部分中的颜色。
以下是相关文件:
RES \值\ 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 \值-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 \布局\ 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 \布局\ 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
&#34;但其他教程将其作为Base.AppTheme
。我也可能需要在MainActivity.java
有人可以帮忙吗?整个话题让我非常困惑。
由于
答案 0 :(得分:1)
您还可以尝试以编程方式更改状态栏颜色:https://developer.android.com/reference/android/view/Window.html#setStatusBarColor(int)
答案 1 :(得分:1)
非常简单的程序。你可以以编程方式做到这一点
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.BLUE);
}
答案 2 :(得分:0)
也许你会发现非常愚蠢,但在我的代码中我有这种经验,你的v-21 style.xml应该是这样的
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryColorDark</item>
<item name="colorAccent">@color/accentColor</item>
</style>
</resources>
你也不必在棒棒糖中自动定义状态栏颜色,它是从Dark Primary Color创建的。您可以尝试此代码
答案 3 :(得分:0)
如果你有
,它不会改变状态栏颜色<item name="android:windowTranslucentStatus">true</item>
从应用主题中删除此行是我发现使用setStausbarColor()时尚未更改状态栏颜色t运行时。
如果你想用android修改颜色:windowTranslucentStatus,那么我发现这个教程到目前为止很有用link。