Android开发时去掉ActionBar

Posted by Donggu Ho on 2016-11-19

今天学Android的时候发现一个问题,我想要将标题栏的Action Bar去掉,但无论是在静态xml中设置Android:themestyle还是在java代码中动态去除都没有用。经研究是因为该Activity继承自AppCompatActivity,因此一定会自带Actionbar。因此需要将继承的类改为Activity,然后应用以下任意一种方法即可:

修改静态xml文件

1. 应用NoActionBar的主题
1
2
3
4
5
6
7
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/Theme.AppCompat.Light.NoActionBar"
android:layout_width="match_parent"
android:layout_height="match_parent">
......
</LinearLayout>
2. 也可以使用android:theme
1
2
3
4
5
6
7
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:layout_width="match_parent"
android:layout_height="match_parent">
......
</LinearLayout>

在java代码中动态修改

1. RequestWindowFeature函数
1
2
3
4
5
6
7
8
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //插入这句
setContentView(R.layout.activity_main);
}
}
2. Hide方法
1
2
3
4
5
6
7
8
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().hide(); //插入这句
setContentView(R.layout.activity_main);
}
}

并不知道哪种方法比较好,不过个人比较喜欢xml声明的方式,感觉前后端分离比较彻底。