android开发--actionbar的初阶
来源:互联网 发布:淘宝买家怎么删除追评 编辑:程序博客网 时间:2024/06/05 16:43
以下内容基于android4.0以上版本.
1.actionbar有无的设置
actionbar一般在建android项目时都默认有actionbar的,要在manifest.xml中的application标签中指定一个主题即可,如android:theme=”@style/AppTheme” ;如果不显示actionbar,有2种方法:
(1)在manifest.xml中的application标签中修改为android:theme=”@android:style/Theme.Holo.NoActionBar”
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.actionbar" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light.NoActionBar" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
(2)在mainactivity.java中用java代码动态修改 private ActionBar actionBar; actionBar=getActionBar(); actionBar.hide();
public class MainActivity extends Activity { private ActionBar actionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); actionBar=getActionBar(); actionBar.hide(); } }
2.actionbar区域划分
分为3个部分,home区域,title区域和menu区域
标号1处是home局域,4是title区域,2,3为menu区域
3.home区
我们先来讨论home区域:
在开发过程中我们主要用来显示一个logo或者附带返回功能;在这里我们可以用代码来设置这个区域是否显示;
默认情况下是有的,
在mainactivity.java中用代码:actionBar.setDisplayShowHomeEnabled(false);则不显示logo
要替换图标的话,有2中方法:
1.在manifest里,application下的标签 android:icon=”@drawable/改为替换的图标”;如我的项目 android:icon=”@drawable/icon01”;
这种修改不仅仅修改了actionbar上home区域的icon,还修改了app的桌面图标
2.在MainActivity.java中代码修改actionBar.setIcon(R.drawable.icon01);
或者actionBar.setLogo(R.drawable.icon01);
在这里setIcon与setLogo区别在与:setIcon的图标必须是方方正正的,而setLogo没这要求,并且setLogo和setIcon同时出现时,系统只会选择setLogo的图标.
修改前:
修改后:
在home区域里还有一个就是,可以设置返回,回退功能,
在MainActivity.java中:
actionBar.setDisplayHomeAsUpEnabled(true);//系统默认是false
则在logo左边出现一个返回的箭头,点击那箭头图标,具有回退功能
4.title区
设置有无:
actionBar.setDisplayShowTitleEnabled(false);//默认是true;
title分主title和副title;
actionBar.setSubtitle(“hello World”);
actionBar.setTitle(“we are ready”);
那么我们能否改变title的文字样式呢,答案是可以的,不过相对比较复杂,我们需要修改项目中res/values/styles.xml文件
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="android:Theme.Light"> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:actionBarStyle">@style/mstyle</item> </style> <style name="mstyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:titleTextStyle">@style/mActionBarTitle</item> </style> <style name="mActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse"> <!-- 修改字体大小 --> <item name="android:textSize">25sp</item> <!--修改字体颜色 --> <item name="android:textColor">@android:color/holo_blue_bright</item> <!--修改字体风格 --> <item name="android:textStyle">italic</item> </style></resources>
效果图如下:
5.menu区
如果要显示menu,必须在MainActivity.java中写入如下代码:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
在项目中,系统是默认用一个独立的xml文件来配置menu的控件的,路径是res/menu/mian.xml,在这文件里面,我们用item便签来建立menu的元素,每个标签代表一个menu的成员,一个item中一般要有id,showAsAction,title
例如下面的item:
<item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/>
如果要显示图标的话,需要加入 android:icon属性
用一个例子来说明一些关键属性;
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.demo.actionbar.MainActivity" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="always" android:title="settings"/> <item android:id="@+id/action_search" android:orderInCategory="100" android:showAsAction="always" android:icon="@drawable/logo_search" android:title="搜索"/> <item android:id="@+id/action_more" android:orderInCategory="100" android:showAsAction="never" android:icon="@drawable/logo_plus" android:title="更多"/></menu>
效果图:
首先,showAsAction这个属性确定了item元素怎样显示;
有3中选择:
(1)always就在menu区显示出来,如果设置了Icon,则显示图标,没有设置icon,显示文字title;
(2)ifRoom,当menu空间足够放置是,就会显示,不够位置空间,就放入overflow中,就是放入最右侧图标中(可以理解为一个装东西的文件盒)
(3)never,就是放入overflow中,只有当点击overflow图标时,放入的item已问题title按列表形式显示出来
而item属性中android:orderInCategory主要用来确定从左到右排开的顺序(如果处在overflow中就是从上到下的顺序),数值越小,越靠左(上);
修改menu中title的文字格式,修改这格式需要在文件res/values/styles.xml中修改
<style name="AppBaseTheme" parent="android:Theme.Light"></style><!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme"> <item name="android:actionBarStyle">@style/mstyle</item> <item name="android:actionMenuTextAppearance">@style/mMenuStyle</item> <!--修改menutitle的文字颜色 --> <item name="android:actionMenuTextColor">@android:color/holo_red_dark</item></style><style name="mstyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:titleTextStyle">@style/mActionBarTitle</item></style><style name="mActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse"> <!-- 修改字体大小 --> <item name="android:textSize">25sp</item> <!--修改字体颜色 --> <item name="android:textColor">@android:color/holo_blue_bright</item> <!--修改字体风格 --> <item name="android:textStyle">italic</item></style><style name="mMenuStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse"> <!--修改menutitle的大小和字体风格 --> <item name="android:textSize">8sp</item> <item name="android:textStyle">bold</item></style>
效果图:
最后一点就是,如何改变overflow图标呢,并且点击overflow既可以显示图标又可以显示文字的列表呢,
应用嵌套就可以做到,即在item中嵌套menu;
代码如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.demo.actionbar.MainActivity" > <item android:id="@+id/action_more" android:icon="@drawable/logo_plus" android:orderInCategory="100" android:showAsAction="always" android:title="更多"> <menu> <item android:id="@+id/action_settings" android:icon="@drawable/ic_launcher" android:orderInCategory="300" android:showAsAction="never" android:title="设置"/> <item android:id="@+id/action_search" android:icon="@drawable/logo_search" android:orderInCategory="200" android:showAsAction="never" android:title="搜索"/> </menu> </item></menu>-------------------------------------------------end----
- android开发--actionbar的初阶
- Android 顶部actionBar的开发
- android开发ActionBar的使用
- Android 开发------------------ 修改 Actionbar 的样式
- Android ActionBar开发技巧
- Android studio 开发ActionBar
- 【Android 应用开发】 ActionBar 样式详解 -- 样式 主题 简介 Actionbar 的 icon logo 标题 菜单样式...
- 【Android 开发教程】操纵ActionBar
- 【Android 开发教程】自定义ActionBar
- Android : UI开发ActionBar页眉
- 【Android 应用开发】 ActionBar 基础
- Android开发之创建ActionBar
- android开发UI篇--actionbar
- android开发让 actionbar 透明
- 【Android UI设计与开发】之详解ActionBar的使用
- Android开发之取消app中自带的actionBar
- Android开发UI之自定义ActionBar的风格
- Android开发UI之ActionBar的覆盖叠加
- java基础之关键字篇
- 204. Count Primes
- 百度地图的学习
- 序列化与Writable接口
- 初学python
- android开发--actionbar的初阶
- new和malloc的区别
- 228. Summary Ranges
- 线性筛μ的模板
- BeanShell 在 JMeter中的使用
- ubuntu10.04下搭建EclipseC/C++环境
- python 汉诺塔问题(Tower of Hanoi Puzzle)
- Hadoop Streaming 编程
- Learning Python(16)--多线程编程(threading,Queue模块)