博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActionBar学习(1)
阅读量:6494 次
发布时间:2019-06-24

本文共 2014 字,大约阅读时间需要 6 分钟。

  hot3.png

添加ActionBar

只需要在AndroidManifest.xml中指定Application或Activity的theme即可:

android:theme="@style/AppTheme" >

res/values/styles.xml指定AppTheme:

    
    
        
        
    
        
    

移除ActionBar

如果想要移除ActionBar的话通常有两种方式,一是将theme指定成Theme.Holo.NoActionBar,表示使用一个不包含ActionBar的主题,二是在Activity中调用以下方法:

ActionBar actionBar = getActionBar();  actionBar.hide();

设置图标和title

  

添加Action按钮

当Activity启动的时候,系统会调用Activity的onCreateOptionsMenu()方法来取出所有的Action按钮,我们只需要在这个方法中去加载一个menu资源,并把所有的Action按钮都定义在资源文件里面就可以了。

public boolean onCreateOptionsMenu(Menu menu) {      MenuInflater inflater = getMenuInflater();      inflater.inflate(R.menu.main, menu);      return super.onCreateOptionsMenu(menu);  }

Menu资源文件:

    
    
    

showAsAction则指定了该按钮显示的位置,主要有以下几种值可选:always表示永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在overflow中,never则表示永远显示在overflow中。

icon用于指定该按钮的图标,title用于指定该按钮可能显示的文字(在图标能显示的情况下,通常不会显示文字)。title中的内容通常情况下只会在overflow中显示出来,ActionBar中由于屏幕空间有限,默认是不会显示title内容的。但是出于以下几种因素考虑,即使title中的内容无法显示出来,我们也应该给每个item中都指定一个title属性:

  • 当ActionBar中的剩余空间不足的时候,如果Action按钮指定的showAsAction属性是ifRoom的话,该Action按钮就会出现在overflow当中,此时就只有title能够显示了。

  • 如果Action按钮在ActionBar中显示,用户可能通过长按该Action按钮的方式来查看到title的内容。

ActionBar响应用户点击事件

当用户点击Action按钮的时候,系统会调用Activity的onOptionsItemSelected()方法,通过方法传入的MenuItem参数,我们可以调用它的getItemId()方法和menu资源中的id进行比较,从而辨别出用户点击的是哪一个Action按钮:

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    switch (item.getItemId()) {    case R.id.action_compose:        Toast.makeText(this, "Compose", Toast.LENGTH_SHORT).show();        return true;    case R.id.action_delete:        Toast.makeText(this, "Delete", Toast.LENGTH_SHORT).show();        return true;    case R.id.action_settings:        Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show();        return true;    default:        return super.onOptionsItemSelected(item);    }}

转载于:https://my.oschina.net/itfanr/blog/345012

你可能感兴趣的文章
.sh
查看>>
碱基序列的儿子最长上涨
查看>>
Android UI SurfaceView的使用-绘制组合图型,并使其移动
查看>>
C# 属性、索引
查看>>
(转)Java多线程之Lock的使用 (待整理)
查看>>
Java中Filter、Servlet、Listener的学习
查看>>
Java Code Examples for javax.servlet.http.Part
查看>>
为什么使用模块?
查看>>
【转】让Chrome化身成为摸鱼神器,利用Chorme运行布卡漫画以及其他安卓APK应用教程...
查看>>
细说Debug和Release区别
查看>>
Oracle分页
查看>>
WPF学习拾遗(二)TextBlock换行
查看>>
ADSL自动更换IP地址源代码
查看>>
关于第三方IOS的checkBox框架的使用
查看>>
-bash: /bin/rm: Argument list too long的解决办法
查看>>
7.10 数据注解特性--NotMapped
查看>>
Oracle 12C -- 清空audit记录
查看>>
centos7 install mysql
查看>>
ReferenceQueue的使用
查看>>
【设计模式】享元模式
查看>>