Android App如何隐藏标题栏并修改状态栏样式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android App如何隐藏标题栏并修改状态栏样式相关的知识,希望对你有一定的参考价值。
1、存在问题
我们在android开发过程中,在创建APP界面时都会存在默认的样式,大多数时候我们的APP页面都是不需要标题栏的,例如下面的这个页面存在的标题栏就显得非常丑陋。
2、解决方案
总体来说,Android隐藏标题栏分两种方式:onCreate中使用代码隐藏 和 AndroidMainfest 定义Activity主题隐藏。
(1)onCreate中使用代码隐藏
Activity继承自Activity时
在setContentView方法前加入以下代码:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
System.out.println("MainActivity:onCreate()方法执行了,主界面被创建了");
Activity继承自AppCompatActivity时,
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
//隐藏标题栏
Objects.requireNonNull(getSupportActionBar()).hide();
setContentView(R.layout.activity_main);
System.out.println("MainActivity:onCreate()方法执行了,主界面被创建了");
(2)AndroidManifest文件中改变Activity的主题
在res--->values--->styles--->中加入以下代码:
<style name="MyStyle" parent="Theme.AppCompat.Light.NoActionBar"/>
然后在需要隐藏标题栏的activity标签声明中,加入以下代码即可 android:theme="@style/MyStyle"
<LinearLayout 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:background="@color/fullwhite"
android:orientation="vertical"
//引用我们自定义的Style
android:theme="@style/MyStyle"
tools:context=".MainActivity"
tools:visibility="visible">
隐藏状态栏
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
//隐藏标题栏
Objects.requireNonNull(getSupportActionBar()).hide();
setContentView(R.layout.activity_main);
//设置状态栏全透明
setStatusBarFullTransparent();
System.out.println("MainActivity:onCreate()方法执行了,主界面被创建了");
/**
* 全透状态栏
*/
protected void setStatusBarFullTransparent()
if (Build.VERSION.SDK_INT >= 21) //21表示5.0
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
else if (Build.VERSION.SDK_INT >= 19) //19表示4.4
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//虚拟键盘也透明
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
3、结果
以上是关于Android App如何隐藏标题栏并修改状态栏样式的主要内容,如果未能解决你的问题,请参考以下文章