前几天做App 的时候,做的比较仓促,就没有添加返回按钮,还有就是MainActivity 的Theme 怎么传递到其他Activity 中,今天无意中看到官方的Train,所以就记下来啦,顺便吧ActionBar,Menu 也复习复习;
添加Action Buttons
首先我们要创建menu
文件,我们可以为顶部添加Menu,showAsAction
是显示的类型,ifRoom 会自动匹配是否有实体键,always 是一直隐藏,但是使用Support Libraryandroid:showAsAction="ifRoom"
会提示错误,所以在menu 中添加xmlns:app="http://schemas.android.com/apk/res-auto"
属性,改为app:showAsAction="ifRoom"
就没有错误;
res/menu/main_activity_actions.xml
1
2
3
4
5
6
7
8
9
10
11<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>
添加ActionBar
1 |
|
为Action Button 添加响应事件
1 |
|
为ActionBar 顶部添加返回按钮
首先要在AndroidManifest 文件中配置
1 | <application ... > |
然后在onCrate 中设置1
2
3
4
5
6
7
8
9
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_displaymessage);
// 3.0+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// If your minSdkVersion is 11 or higher, instead use:
// getActionBar().setDisplayHomeAsUpEnabled(true);
}
最后的效果图
为下一个Activity 传递MainActivity Theme
需要注意的是,setTheme
方法在setContentView
之前;其实就是利用Intent 将Theme 传递到下一个Activity;
1 | public class MainActivity extends ActionBarActivity { |
在下一个Activity 获取Theme
1 | public class BackActivity extends ActionBarActivity { |