AcitonBar 自定义布局
Android系统中ActionBar默认的布局不美观且难于控制,通过为ActionBar自定义布局的方式可以灵活控制ActionBar。
自定义Activity主题和ActionBar样式
在新建的android工程的res/values/styles.xml添加自定义ActionBar样式的代码和自定义Activity主题的代码,并在AndroidMainfest.xml中给需要使用该自定义ActionBar的Activity中加入该主题:
(1)自定义ActionBar样式代码如下:
<!-- 自定义ActionBar样式,重设ActionBar背景,隐藏actionbar左侧的应用图标和标题 -->
<style name="actionbar_def_style" parent="@android:style/Widget.Holo.Light.ActionBar">
<!-- 在样式里面直接替换掉actionbar的背景,避免在有的窗口进入慢时导致进入时显示系统默认的actionbar -->
<item name="android:background">@drawable/actionbar_background</item>
<!-- 在样式里面去掉acionbar的应用图标和标题 -->
<item name="android:displayOptions">useLogo</item>
</style>
(2)自定义Activity主题代码如下:
<!-- 自定义窗口样式,需要带ActionBar -->
<style name="ActivityTheme_Light" parent="android:Theme.Holo.Light">
<item name="android:actionBarStyle">@style/actionbar_def_style</item>
</style>
(3)在AndroidManifest.xml文件中需要使用该自定义ActionBar的Activity中加入该主题如下:
<activity
android:name="com.zmy.actionbarstyle.DiyActionBarActivity"
android:theme="@style/ActivityTheme_Light"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在Activity中加载ActionBar的自定义布局
(1)ActionBar加载自定义布局的代码封装如下:
/**
* 设置ActionBar的布局
* @param layoutId 布局Id
*
* */
public void setActionBarLayout( int layoutId ){
ActionBar actionBar = getActionBar( );
if( null != actionBar ){
actionBar.setDisplayShowHomeEnabled( false );
actionBar.setDisplayShowCustomEnabled(true);
LayoutInflater inflator = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(layoutId, null);
ActionBar.LayoutParams layout = new ActionBar.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
actionBar.setCustomView(v,layout);
}
}
(2)在onCreate()方法中调用该方法,并传入自定义的布局文件ID:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_diy_action_bar);
// 自定义actionbar的布局
setActionBarLayout( R.layout.actionbar_port_layout );
}
(3)自定义布局文件“actionbar_port_layout.xml ”代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="63.0dp"
android:id="@+id/actionbarLayoutId"
android:background="@drawable/actionbar_background">
<ImageButton
android:id="@+id/menuBtnId"
android:layout_marginLeft="12.0dp"
android:layout_marginTop="12.0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/menu"
android:contentDescription="@string/app_name"
android:onClick="onClick"
/>
<ImageButton
android:id="@+id/noteBtnId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12.0dp"
android:background="@drawable/notes"
android:contentDescription="@string/app_name"
android:layout_marginRight="12.0dp"
android:layout_alignParentRight="true"
android:onClick="onClick"
/>
<ImageButton
android:id="@+id/editBtnId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12.0dp"
android:background="@drawable/edit"
android:layout_toLeftOf="@id/noteBtnId"
android:layout_marginRight="12.0dp"
android:contentDescription="@string/app_name"
android:onClick="onClick"
/>
<ImageButton
android:id="@+id/downloadBtnId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12.0dp"
android:background="@drawable/download"
android:layout_toLeftOf="@id/editBtnId"
android:layout_marginRight="12.0dp"
android:contentDescription="@string/app_name"
android:onClick="onClick"
/>
</RelativeLayout>
在Action中监听ActionBar中按钮的点击事件
/**
* 实现onClick方法,在这里面监听actionbar中按钮的点击事件
*
* */
public void onClick( View v ){
switch( v.getId( ) ){
case R.id.menuBtnId:{
showToast( this, "menuBtn" );
}
break;
case R.id.noteBtnId:{
showToast( this, "noteBtn" );
}
break;
case R.id.downloadBtnId:{
showToast( this, "downloadBtn" );
}
break;
case R.id.editBtnId:{
showToast( this, "editBtn" );
}
break;
default:{
}
break;
}
}
源码:http://download.csdn.net/detail/zmywly/6922375
AcitonBar 自定义布局的更多相关文章
- 干货之UIButton的title和image自定义布局
当需要实现一个自定义布局图片和标题的按钮时候,不知道有多少少年直接布局了UIButton,亦或是自定义一个UIView,然后以空白UIButton.UILabel.UIImageVew作为subVie ...
- SharePoint 2013 设置自定义布局页
在SharePoint中,我们经常需要自定义登陆页面.错误页面.拒绝访问等:不知道大家如何操作,以前自己经常在原来页面改或者跳转,其实SharePoint为我们提供了PowerShell命令,来修改这 ...
- Collection View 自定义布局(custom flow layout)
Collection view自定义布局 一般我们自定义布局都会新建一个类,继承自UICollectionViewFlowLayout,然后重写几个方法: prepareLayout():当准备开始布 ...
- iOS-UICollectionView自定义布局
UICollectionView自定义布局 转载: http://answerhuang.duapp.com/index.php/2013/11/20/custom_collection_view_l ...
- 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形…)
前言: 本篇文章不是分享collectionView的详细使用教程, 而是属于比较’高级’的collectionView使用技巧, 阅读之前, 我想你已经很熟悉collectionView的基本使用, ...
- OC - 31.通过封装的自定义布局快速实现商品展示
概述 实现效果 设计思路 采用MVC架构,即模型—视图-控制器架构 使用MJExtension框架实现字典转模型 使用MJRefresh框架实现上拉和下拉刷新 上拉刷新,加载新的数据 下拉刷新,加载更 ...
- OC - 30.如何封装自定义布局
概述 对于经常使用的控件或类,通常将其分装为一个单独的类来供外界使用,以此达到事半功倍的效果 由于分装的类不依赖于其他的类,所以若要使用该类,可直接将该类拖进项目文件即可 在进行分装的时候,通常需要用 ...
- OC - 29.自定义布局实现瀑布流
概述 瀑布流是电商应用展示商品通常采用的一种方式,如图示例 瀑布流的实现方式,通常有以下几种 通过UITableView实现(不常用) 通过UIScrollView实现(工作量较大) 通过UIColl ...
- Android:创建可穿戴应用 - 自定义布局
创建自定义布局(Creating Custom Layouts) 本文将介绍如何创建自定义通知以及使用可穿戴UI库来创建自定义布局你同时还需要了解可穿戴设计准则(Wear Design Princip ...
随机推荐
- 写自己的WPF样式 - 窗体
初试WPF样式,感觉还不错.上篇写完了按钮的样式下面写窗体,废话不多说直接上代码: (1)定义一个窗体样式"MyWpfWindow" <Style x:Key="M ...
- hdu 3037 Saving Beans(组合数学)
hdu 3037 Saving Beans 题目大意:n个数,和不大于m的情况,结果模掉p,p保证为素数. 解题思路:隔板法,C(nn+m)多选的一块保证了n个数的和小于等于m.可是n,m非常大,所以 ...
- android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法
定义的getView执行多次的ListView布局: <ListView android:id="@+id/lv_messages" android:layout_width ...
- Topcoder SRM 648 (div.2)
第一次做TC全部通过,截图纪念一下. 终于蓝了一次,也是TC上第一次变成蓝名,下次就要做Div.1了,希望div1不要挂零..._(:зゝ∠)_ A. KitayutaMart2 万年不变的水题. # ...
- MVC4 EF linq从客户端中检测到有潜在的危险的Request.Path值
今天做项目的时候遇到了这样的问题贴出来给大家分享下啦, 使用MVC4 EF linq跳转视图的时候出现,从客户端中检测到有潜在的危险的Request.Path值错误,如下图所示: 解决办法如下: r ...
- javascript:void(0)知多少
在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶 ...
- json数据获取
今天Pei讲了一个android获取json数据的方式吧 代码什么的没看懂,反正知道就是那么一回事,用AsyncTask线程来获取json数据,我也不知道这样说对不对 估计以后回过来看的时候会发现一大 ...
- Android开发手记(7) 按钮类控件的使用
1.点击Button改变页面背景色 通过Button改变页面背景色,首先新建相应的对象,让后绑定到Layout上的元素. final RelativeLayout layout = (Relative ...
- 基于AFNetworking3.0的网络封装
1.创建名为HTTPMethod(自己随便起名字)的头文件 2.导入AFNetworking头文件(在github上下载最新版): #import "AFNetworking.h" ...
- Linux 从 sar 到 sar2html 的认识
这些变形的工具.诸如:淘宝的Tsar.ksar.sar2html....等.都是通过抓取 sar的数据 所以在最终呈现的数据上变化不大.只是展现的手段和效果不一样而已 sar 是帮助我们 ...