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、结果

                        ​​​​​​​        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值