关于ActionBar
添加ActionBar:
Android 3.0(API 11)(不含API11)以下的版本中,如果需要活动有ActionBar,需要让活动继承ActionBarActivity类,并且在Manifest.xml文件中对应活动的注册信息中添加主题属性。比如要让MainActivity有ActionBar,需要:
第一步,让MainActivity继承ActionBarActivity类
public class MainActivity extends ActionBarActivity { ... }
第二步,在MainActivity的注册信息中添加主题属性,像下面这样:
<activity android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.Light" ... >
从 Android 3.0(API 11)开始,ActionBar被添加到Activity中,并且默认使用Theme.Holo主题,所以如果targetSdkVersion设置的不小于11,只需要继承Activity类,活动就会有ActionBar。
隐藏ActionBar:
如果需要隐藏ActionBar,可以在活动的注册信息中将主题设置为Theme.NoTitleBar,如下:
<activity android:name=".MainActivity" android:theme="@android:style/Theme.NoTitleBar" … >
如果要隐藏ActionBar和通知栏,相当于全屏,可以将主题设置成Theme.NoTitleBar.Fullscreen,如下:
<activity android:name=".MainActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen " … >
在Android3.0(API11)及以上的版本中,还可以这样,如果某个活动需要隐藏(或显示)ActionBar,可以:
ActionBar actionBar = getActionBar();
actionBar.hide();
actionBar.show();
ActionBar标题文本
标题文本是靠活动的注册信息中android:label属性控制的,比如:
<activity android:name=".DisplayMessageActivity" android:label="@string/title_activity_display_message" />
标题栏返回按钮
类似于下图这种效果。
假设要给DisplayActivity增加这种返回按钮,点击后返回MainActivity。
首先需要将DisplayActivity的ParentActivity设置为MainActivity,在活动注册信息中设置:
<activity android:name=".DisplayActivity" android:label="@string/title_activity_display" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>
android:parentActivityName=".MainActivity"适用于API16及以上的SDK,为兼容16以下的SDK,还需要添加下面的
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" />
然后在DisplayActivity的onCreate()函数中添加getSupportActionBar().setDisplayHomeAsUpEnabled(true);语句启用返回按钮,如果minSdkVersion不小于11,则将上面那句替换为这句:
getActionBar().setDisplayHomeAsUpEnabled(true);
以前写关于返回按钮的笔记的时候,并没有成功做出返回按钮,因为当时实验时用的SDK版本比较低,所以直接只用了
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" />
后来发现返回无效,单独只用android:parentActivityName=".MainActivity"也是无效的,今天两个放一起合用,返回按钮才起作用了。