详见https://developer.android.com/training/basics/actionbar/adding-buttons.html
1.在XML文件中设置ActionBar的item
- 文件根节点为menu,放在res/menu文件夹下
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="查找" android:showAsAction="ifRoom"/> <item android:id="@+id/action_setting" android:title="设置" android:showAsAction="never"/> </menu>
2.显示ActionBar
- 在android3.0 以后的版本中已经默认添加了ActionBar,我们只需将上面定义的actions显示即可
- 这里的Inflater为专门的MenuInflater
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = this.getMenuInflater(); inflater.inflate(R.menu.actionbar_actions, menu); return super.onCreateOptionsMenu(menu); }
3.添加按键响应
@Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case R.id.action_search: Toast.makeText(this, "正在查找。。。", Toast.LENGTH_SHORT).show(); break; case R.id.action_overflow: Toast.makeText(this, "更多选项。。。", Toast.LENGTH_SHORT).show(); } return super.onOptionsItemSelected(item); }
4.添加返回主Activity功能
- 需要在配置清单中指明parent Activity:parent Activity不需要变动
- 需要调用方法将ActionBar中up按键(返回主Activity)显示
- 不需要我们自己定义up按键处理方法
<activity android:name=".ActionBarActivity" android:parentActivityName="com.njulya.demo_view.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.njulya.demo_view.MainActivity" /> </activity>
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = this.getMenuInflater(); inflater.inflate(R.menu.actionbar_actions, menu); //添加返回主Activity功能 getActionBar().setDisplayHomeAsUpEnabled(true); return super.onCreateOptionsMenu(menu); }
5. 添加常见的searchView控件
- 需要设置actionViewClass属性
- 详见http://developer.android.com/guide/topics/ui/actionbar.html
<item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="查找" android:showAsAction="ifRoom|collapseActionView" android:actionViewClass="android.widget.SearchView"/>
时间: 2024-10-23 10:19:44