Android App如何隐藏标题栏并修改状态栏样式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android App如何隐藏标题栏并修改状态栏样式相关的知识,希望对你有一定的参考价值。


 1、存在问题

        我们在android开发过程中,在创建APP界面时都会存在默认的样式,大多数时候我们的APP页面都是不需要标题栏的,例如下面的这个页面存在的标题栏就显得非常丑陋。

Android

  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()方法执行了,主界面被创建了");

Android

        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()方法执行了,主界面被创建了");

Android

(2)AndroidManifest文件中改变Activity的主题 

        在res--->values--->styles--->中加入以下代码:

<style name="MyStyle" parent="Theme.AppCompat.Light.NoActionBar"/>

Android

        然后在需要隐藏标题栏的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">

Android

       隐藏状态栏

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);


Android

3、结果

Android



以上是关于Android App如何隐藏标题栏并修改状态栏样式的主要内容,如果未能解决你的问题,请参考以下文章

仅在一个片段中隐藏状态栏并在其他片段中显示

android沉浸式

如何隐藏主窗口标题栏并在 kivy 框架中放置透明背景?

如何在用户注销时隐藏侧边栏并在用户登录时显示侧边栏?

如何隐藏顶部导航栏并在菜单中仅显示底部

如何在导航栏下隐藏搜索栏并在用户下拉表格视图时显示它?