你的位置:首页 > 操作系统

[操作系统]关于ActionBar


添加ActionBar

  Android 3.0(API 11)(不含API11)以下的版本中,如果需要活动有ActionBar,需要让活动继承ActionBarActivity类,并且在Manifest.

  第一步,让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"也是无效的,今天两个放一起合用,返回按钮才起作用了。