(1)简单创建一个ActionBar
1. 3.0(版本11)以及以上的版本默认使用的主题(Themes是Theme.Holo),
所以只要这样就行了。
<manifest ... >
<uses-sdk android:minSdkVersion="11" ... />
...
</manifest>
(如果版本是11以及以上的,想要自己创建一个定制主题,要用Theme.Holo作为父主题)
2. 支持2.1以及以上的,要用到支持包,v7支持包
注意事项:
(1)Activity必须继承于ActionBarActivity
public class MainActivity extends ActionBarActivity { ... }
(2)在manifest文件中,改<application>或者是<activity>中的主题,为
Theme.AppCompat
<activity android:theme="@style/Theme.AppCompat.Light" ... >
这样就可以在更低的版本中,直接使用ActionBar了。
(2)在XML中添加ActionBar的Button
3.0以及3.0以上的xml布局:
<span style="font-size:14px;"><menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu></span>
如果有空间就显示:
<span style="font-size:14px;">android:showAsAction="ifRoom"</span>
永远显示在点点的点击之后的界面中:(默认是这样的,显示在溢出的界面中)
<span style="font-size:14px;">android:showAsAction="never"</span>
用支持包的xml布局
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
...
</menu>
今天看了文档,我才知道
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
这两句是干嘛用的。。(深深无奈)
第一句是Android的默认资源包xml的命名空间,所以下面可以用android:了
第二句是自己的xml命名空间 yonrapp是特定的前缀,所以可以用yourapp:了
(3)添加Actions到ActionBar中
重写Activity中的onCreateOptionsMenu方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
(4)响应Action Button点击事件
<span style="font-family:SimSun;font-size:10px;">@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
}</span>
(5)添加回退Button返回主Activity
不是每一个Activity都是程序的入口Activity,有时候,点击返回的时候,想要回退到主界面之类的
在配置清单中:
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
代码中设置为点击返回的那个Button可以返回到父Activity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_displaymessage);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// If your minSdkVersion is 11 or higher, instead use:
// getActionBar().setDisplayHomeAsUpEnabled(true);
}