ActionBar使用
16lz
2021-01-26
安卓SDK11.0版本以上就支持Action Bar了。所谓的Action Bar实际上就是代替以前的标题栏的存在,如果设置了那就会在Activity的顶部显示,我们可以在AndroidManifest.xml里面这样显示声明ActionBar:android:theme="@android:style/Theme.Holo"
一般情况下,我们需要在onCreateOptionsMenu里面把自定义的视图加载进去:
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}
然后可以知道我们加载了一个R.menu.main的视图,这个视图是这样写的:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/> <item android:id="@+id/writeArticle" android:icon="@drawable/ic_launcher" android:showAsAction="always" android:title="写文章"> </item></menu>第一个item是菜单,第二个item是我自定义的一个项。
其中要注意两个地方:
1)showAsAction:设置该条目什么时候显示在ActionBar里面
这个属性可接受的值有:
1、always:这个值会使菜单项一直显示在Action Bar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
3、never:这个值使菜单项永远都不出现在Action Bar上。
4、withText:这个值使菜单项和它的图标,菜单文本一起显示。
2)orderInCategory:actionbar里每个item的优先级,值越大优先级越低,actionbar地方不够就会放到overflow中。
那么设置了item之后怎么监听点击事件呢?
其实item点击之后会触发Activity里面的onOptionsItemSelected回调函数,下面是我处理的代码:
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.writeArticle:Toast.makeText(this, "write", 0).show();break;default:Toast.makeText(this, "null", 0).show();break;}return super.onOptionsItemSelected(item);}
这样设置我通过点击自定义的item writeArticle就能够Toast一条信息了。
最后是完整的Activity代码,还是贴出来吧,很简单。
package com.example.luntan;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.writeArticle:Toast.makeText(this, "write", 0).show();break;default:Toast.makeText(this, "null", 0).show();break;}return super.onOptionsItemSelected(item);}}
更多相关文章
- Android(安卓)Action Bar学习(一)--基本介绍及使用
- Android群英传之Android绘图机制与处理技巧
- Flutter
- 如何不让EditText不获得焦点
- Android设置PreferenceCategory背景颜色的方法
- Android(安卓)ListView的多布局实现
- Android(安卓)Socket服务器 Servlet服务器
- Android如何在app中通过一个按钮直接跳转到的系统的权限设置页面
- android中自定义WebView显示网页或本地html文件