Android 状态栏颜色不随根元素的相对布局而改变
我刚刚开始学习android,我正在学习添加AppBar。但是如果我使用相对布局作为根,那么状态栏就不要使用主题中定义的颜色“colorPrimaryDark”。但是将布局更改为协调布局可以使其正常工作 有人能解释一下区别吗?是否要求使用坐标布局 活动扩展了AppCompative活动Android 状态栏颜色不随根元素的相对布局而改变,android,android-layout,material-design,Android,Android Layout,Material Design,我刚刚开始学习android,我正在学习添加AppBar。但是如果我使用相对布局作为根,那么状态栏就不要使用主题中定义的颜色“colorPrimaryDark”。但是将布局更改为协调布局可以使其正常工作 有人能解释一下区别吗?是否要求使用坐标布局 活动扩展了AppCompative活动 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.ankit.designdemo.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark">
</android.support.v7.widget.Toolbar>
</RelativeLayout>
@颜色/原色
@颜色/原色暗
@颜色/颜色重音
假的
真的
公共类MainActivity扩展了AppCompatActivity{
私人抽屉布局mDrawerLayout;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_活动);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
ActionBar ActionBar=getSupportActionBar();
actionBar.setHomeAsUpIndicator(R.drawable.ic_菜单);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
}
状态栏的样式由
android:fitsSystemWindows
标签。RelativeLayout当前不支持此操作。要么你尝试另一种布局,比如FrameLayout,它可以工作,但我建议你坚持使用坐标布局
也许您可以在这里了解更多详细信息:
在v21/styles.xml
中,您可能有以下代码行:
<item name="android:statusBarColor">@android:color/transparent</item>
@android:color/transparent
当您在API23
上运行时,声明的样式将被v21/styles.xml
中的样式覆盖
作为解决方案:
只需删除该行,它就会正常工作只需添加该行即可
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
你能在你定义的colorPrimaryDark
的地方显示样式吗?@hrskrs添加到问题中。你确定你的样式页面在values-v21
上吗?首先,你不需要协调布局来使用工具栏。状态栏应该用你的colorPrimaryDark
开箱即用的颜色,因为你继承了AppCompatActivity
,所以我无法重现你的问题。你的代码中有任何操作吗?@Alex.F,我刚刚创建了一个带有滚动活动的新android项目,除main_activity.xml文件外,未涉及任何代码。。它使用坐标布局自动创建,工作正常。。因为我指的是一些教程,所以使用了相对布局。。就这样。。没有其他改变。现在,我的问题解决了,我正在学习,你能补充一下关于覆盖的说明吗。。我的印象是v21/styles.xml将只在API 23上使用。。还有,为什么事情会与CoordinatorLayout一起工作,这将是一个很好的补充well@Ankit关于样式,您可以阅读它们如何基于平台工作。关于CoordinatorLayout
:它之所以有效是因为android:fitsSystemWindows=“true”
,如果您删除它,它将显示相同的行为。我现在明白了。。因此,v21/styles.xml将在API 21或更高版本时运行。。感谢您的帮助。@Ankit yeap,声明的样式将取自v21/styles.xml
,未声明但在styles.xml
上声明的样式将取自styles.xml
<item name="android:statusBarColor">@android:color/transparent</item>
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);