android应用中去掉标题栏

Android应用创建activity时去掉标题栏,网上有众多的解决方案,但是都停留在解决方法,但是没有解析原因。这里也只是我粗略的理解,欢迎大家的批评指正。

1:创建的activity继承Activity类时,解决方法有三种:

     <1>在activity的代码中实现:只能控制当前的activity无标题栏 

     MainActivity.this.requestWindowFeature(Window.FEATURE_NO_TITLE);     

         注意:这句代码要写在setContentView()前面,否则无效。

    <2>在清单文件里设置:可以使整个应用都无标题栏

<application android:icon="@drawable/icon"   
           android:label="@string/app_name"   
           android:theme="@android:style/Theme.NoTitleBar">  

          这是SDK自带的theme主题,但是打开查看后我们可以看到这个主题也只是设置了无标题,需要做的处理太多,页面效果非常不好,   所以这种实现方式并不建议

 <style name="Theme.NoTitleBar">
         <item name="windowNoTitle">true</item>  </style>

         <3>在styles.xml文件里定义:

      <?xml version="1.0" encoding="UTF-8" ?>  
                     <resources>  
                      <style name="notitle" parent="Theme.APpCompat.NoActionBar">  
                     <item name="android:windowNoTitle">true</item>  
                      </style>   
                    </resources>  

           然后在清单文件里引用就可以了:             

<application android:icon="@drawable/icon"   
                   android:label="@string/app_name"   
                   android:theme="@style/notitle">  

         通过上面的实现方式我们可以看出来,@android:style引用的主题是系统SDK自带的,而@style引用的是在项目values目录下styles.xml文件里定义的主题

2:创建的activity继承自AppCompatActivity时,采用上面的第一种方法无效,第二种方法运行出错,为什么呢?

      因为AppCompatActivity根本没标题栏,因为他有个ActionBar才感觉是个标题栏。那么解决办法呢?

      在activity中,setContentView()方法后面,添加getSupportActionBar().hide()即可。 

3:AS中我们创建activity,让他继承Activity,实际上不做任何处理,标题栏也是隐藏的,这是为什么呢?

     从清单文件里的android:theme="@style/AppTheme"一级一级查下去,我们可以看到,AppTheme的最终父级 Platform.AppCompat.Light 里有这样的设定:

    <item name="android:windowNoTitle">true</item>   所以会隐藏标题栏。              

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值