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


    1、存在问题

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

                                                    

      2、解决方案     

            总体来说,Android隐藏标题栏分两种方式:onCreate中使用代码隐藏  和  AndroidMainfest 定义Activity主题隐藏。

    (1)onCreate中使用代码隐藏

            Activity继承自Activity时

           在setContentView方法前加入以下代码:

    1. @Override
    2. protected void onCreate(Bundle savedInstanceState) {
    3. super.onCreate(savedInstanceState);
    4. setContentView(R.layout.activity_main);
    5. //隐藏标题栏
    6. requestWindowFeature(Window.FEATURE_NO_TITLE); 
    7. System.out.println("MainActivity:onCreate()方法执行了,主界面被创建了");
    8. }

            Activity继承自AppCompatActivity时,

    1. @Override
    2. protected void onCreate(Bundle savedInstanceState) {
    3. super.onCreate(savedInstanceState);
    4. //隐藏标题栏
    5. Objects.requireNonNull(getSupportActionBar()).hide();
    6. setContentView(R.layout.activity_main);
    7. System.out.println("MainActivity:onCreate()方法执行了,主界面被创建了");
    8. }

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

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

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

            然后在需要隐藏标题栏的activity标签声明中,加入以下代码即可 android:theme="@style/MyStyle"

    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:app="http://schemas.android.com/apk/res-auto"
    3. xmlns:tools="http://schemas.android.com/tools"
    4. android:layout_width="match_parent"
    5. android:layout_height="match_parent"
    6. android:background="@color/fullwhite"
    7. android:orientation="vertical"
    8. //引用我们自定义的Style
    9. android:theme="@style/MyStyle"
    10. tools:context=".MainActivity"
    11. tools:visibility="visible">

           隐藏状态栏

    1. public class MainActivity extends AppCompatActivity {
    2. @Override
    3. protected void onCreate(Bundle savedInstanceState) {
    4. super.onCreate(savedInstanceState);
    5. //隐藏标题栏
    6. Objects.requireNonNull(getSupportActionBar()).hide();
    7. setContentView(R.layout.activity_main);
    8. //设置状态栏全透明
    9. setStatusBarFullTransparent();
    10. System.out.println("MainActivity:onCreate()方法执行了,主界面被创建了");
    11. }
    12. /**
    13. * 全透状态栏
    14. */
    15. protected void setStatusBarFullTransparent() {
    16. if (Build.VERSION.SDK_INT >= 21) {//21表示5.0
    17. Window window = getWindow();
    18. window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    19. window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    20. | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    21. window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    22. window.setStatusBarColor(Color.TRANSPARENT);
    23. getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    24. } else if (Build.VERSION.SDK_INT >= 19) {//19表示4.4
    25. getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    26. //虚拟键盘也透明
    27. getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    28. }
    29. }
    30. }

    3、结果

                            ​​​​​​​        

     

  • 相关阅读:
    阿里Nginx替代产品-Tengine安装
    小黑子—spring:第一章 Bean基础
    阿里云云主机免费试用三个月
    【Linux operation 55】centos 9 steam 在线安装docker
    java数组和应用
    Idea Git 已提交代码版本回滚
    大数据安全建设面临哪些挑战
    Spring 中Bean的作用域有哪些?
    【Spring Boot】实现全局异常处理
    ESP32 Arduino实战协议篇-BLE 客户端实现温度和湿度数据传输
  • 原文地址:https://blog.csdn.net/m0_37718750/article/details/125928057