去除继承ActionBarActivity的Activity中的ActionBar
在android studio中,我最小版本设置为4.0,新建的Activity 会继承 ActionBarActivity ,这时Activity 会自动生成ActionBar,我们想去掉它,可以这样做:
1.把styles.xml中修改parents
parent="Theme.AppCompat.Light.DarkActionBar"
变为:
parent="Theme.AppCompat.Light.NoActionBar"
这里的AppCompat就是为了兼容Material Design的Theme。
如果修改为继承Activity, styles.xml 中的 Theme 就与 support.v7 包里的Theme 不相匹配,所以就算不改, ActionBar 也并不会生成。此时如果调用 show() (具体见第二条)的话,程序就会崩溃。
至于跟Activity相匹配的Theme应该是什么,我也没找到,希望看到的人知道的话能评论告知一下,谢谢了。
2.当要把活动变成Dialog 时:
高低版本的theme会不一样,如果是低版本:
android:theme="@android:style/Theme.Dialog"
高版本:
android:theme="@style/Theme.AppCompat.Dialog"
低版本的活动继承的是Activity,高版本继承的是ActionBarActivity。
低版本的要去掉ActionBar,可以在活动的onCreate方法中加入
requestWindowFeature(Window.FEATURE_NO_TITLE);
或是
ActionBar actionBar=getActionBar();
actionBar.hide();
高版本的不能用上面的requestWindowFeature(Window.FEATURE_NO_TITLE),可以用第二个,但是要把 getActionBar() 改为 getSupportActionBar(),即
ActionBar actionBar=getSupportActionBar();
actionBar.hide();
如果选择了 hide() 的方法,又想要再显示出来的话,可以将其改为
actionBar.show();
因为这里导入了 support.v7 的包,一些地方就需要变化。
关于 support.v7 ,可以看这里。
http://www.stormzhang.com/android/2015/03/29/android-support-library/