对于技术类的博客,我们永远追寻最新API脚步,在API22之前我们使用标题栏基本都是在ActionBarActivity的Activity中处理的,而API22之后,谷歌遗弃了ActionBarActivity,推荐我们也可以说是强制我们使用AppCompatActivity。
然而ActionBarActivity与AppCompatActivity的使用大同小异,下面我们将介绍最新的Activity组件之AppCompatActivity的使用。
最后的效果与微信基本相同,图如下:
1.初探AppCompatActivity
我们按照AndroidStudio的默认顺序创建项目,默认Activity继承自AppCompatActivity。代码如下:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
运行提到如下所示的界面:
其结果与继承自Activity并无二致,丑爆了。下面我们来一步一步扩展其标题栏,让他的内容更丰富多彩。
2.AppCompatActivity与Toolbar结合
其实我们并不是要使用AppCompatActivity自带的标题栏,那样扩展会很麻烦,在14年的Android 5.0的时候就用Toolbar替代了ActionBar,而ActionBarActivity又被AppCompatActivity替代,那么使用方法就是引入Toolbar设置到Activity中。
㈠首先我们必须在配置文件中,写入Toolbar,代码如下:
<android.support.v7.widget.Toolbar android:id="@+id/activity_main_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary"> </android.support.v7.widget.Toolbar>
解释①android:minHeight="?attr/actionBarSize":设置标题栏最小高度为ActionBar的高度。
解释②android:background="?attr/colorPrimary":该主题下的主色。也就是默认的灰色。
我们知道在AndroidManifest.xml清单文件下application中设置了android:theme="@style/AppTheme"而查看AppTheme看到如下样式
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> </style> </resources>
从名字我们就可以看出来,默认的标题栏为黑色。我们使用了toolbar就必须修改样式文件,将原来的标题栏去掉,修改后的样式文件如下:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> </style> </resources>
如下这个时候运行,那么你将看到界面也是没有标题栏的,因为你并没有设置到AppCompatActivity中去。
㈡将Toolbar显示到界面
我们创建一个方法名为initActionBar(),首先当然是获取ToolBar控件,然后将Toolbar设置到Activity中去。代码如下:
public void initActionBar() { Toolbar toolbar = (Toolbar) findViewById(R.id.activity_main_toolbar); setSupportActionBar(toolbar); }
现在运行,我们将得到如下界面:
依然不是你期待的效果,下面我们将介绍AppCompatActivity的细节。