轉載 https://blog.csdn.net/today_work/article/details/79300181
繼承AppCompatActivity的界面。 如下圖所示:
copy界面代碼
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
1
2
3
4
5
6
7
8
大家可以看到在界面最上面會出現一個ActionBar,默認顯示項目的名稱Toolbar。下面我們將AS項目中的父類AppCompatActivity手動替換成Activity試試看。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
1
2
3
4
5
6
7
8
修改AppCompatActivity為Activity,並導入相應的包。這樣我們的項目代碼在Eclipse與AS的就保持一致了,運行一下看看效果。
程序運行后,大家可以發現頂部的ActionBar不見了,代碼中都是繼承Activity的,但是運行出來的界面確不一樣,所以在AS中創建項目的時候,自動繼承的是AppCompatActivity。
ActionBar向前兼容,出現在support v7里,如果需要使用兼容版的actionbar,則繼承support v7提供的ActionBarActivity
從下圖看ActionBarActivity實際就是AppCompatActivity,就是帶有標題欄的Activity.
但是在compile ‘com.android.support:appcompat-v7:26.1.0’包下沒有ActionBarActivity這個類了。
所以AppcompaActivity其實就是ActionBarActivity
去掉AppcompaActivity的標題欄方法:
if (getSupportActionBar()!=null){
getSupportActionBar().hide();
}
總結一下:AppcompaActivity相對於Activity的主要的兩點變化;
1:主界面帶有toolbar的標題欄;
2,theme主題只能用android:theme=”@style/AppTheme (appTheme主題或者其子類),而不能用android:style。 否則會提示錯誤: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
---------------------
作者:today_work
來源:CSDN
原文:https://blog.csdn.net/today_work/article/details/79300181
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!