ActionBar 自定义布局定义

 

Android系统中ActionBar默认的布局不美观且难于控制,通过为ActionBar自定义布局的方式可以灵活控制ActionBar。

效果:

工具/原料

  • android studio3.5集成开发环境

  • android sdk 24.0及以上

方法/步骤

    1. 自定义Activity主题和ActionBar样式

      在新建的android工程的res/values/styles.xml添加自定义ActionBar样式的代码和自定义Activity主题的代 码,并在AndroidMainfest.xml中给需要使用该自定义ActionBar的Activity中加入该主题:

      (1)自定义ActionBar样式代码如下:

      <!-- 自定义ActionBar -->
          <style name="me_action_bar"
              parent="@android :style/Widget.Holo.Light.ActionBar">
              <!-- 更改ActionBar背景 -->
              <item name="android:background">#5FBDCB</item>
          </style>

      (2)自定义Activity主题代码如下:

      <!-- 自定义Activity主题 窗口样式 -->
          <style name="ActivityTheme_Light"
              parent="android:Theme.Holo.Light">
              <item name="android:actionBarStyle">@style/me_action_bar</item>
          </style>

      (3)在AndroidManifest.xml文件中需要使用该自定义ActionBar的Activity中加入该主题如下:

      <activity
                  android:theme="@style/ActivityTheme_Light"
                  android:name="com.looookme.actionbardemo.SecondActivity"
                  android:parentActivityName=".MainActivity">
                  <meta-data
                      android:name="android.support.PARENT_ACTIVITY"
                      android:value=".MainActivity"/>
              </activity>

    2. 在Activity中加载ActionBar的自定义布局

      (1)ActionBar加载自定义布局的代码封装如下:

      private void setActionBarLayout(int layoutId) {
              // TODO Auto-generated method stub
              ActionBar actionBar =getSupportActionBar();

      if(null != actionBar){
                  actionBar.setDisplayShowHomeEnabled(false);
                  actionBar.setDisplayShowCustomEnabled(true);
                  
                  LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                  View v = inflater.inflate(layoutId, null);
                  ActionBar.LayoutParams lParams = new ActionBar.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
                  actionBar.setCustomView(v, lParams);
              }
              
          }

      (2)在onCreate()方法中调用该方法,并传入自定义的布局文件ID:

      @Override
          protected void onCreate(Bundle savedInstanceState) {
              // TODO Auto-generated method stub
              super.onCreate(savedInstanceState);
              
              setActionBarLayout(R.layout.actionbar_layout);
          }

      (3)自定义布局文件“actionbar_port_layout.xml ”代码如下:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="44dp"
          android:orientation="horizontal"
          android:gravity="center_vertical"
          android:background="#008000">
          
          <ImageView
              android:layout_marginLeft="24dp"
              android:layout_width="36dp"
              android:layout_height="36dp"
              android:src="@drawable/ic_launcher"/>
          
          <EditText
              android:layout_marginLeft="24dp"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="36dp"
              android:hint="Please input "
              android:id="@+id/et_input"/>
          
          <ImageButton
              android:layout_marginRight="20dp"
              android:layout_marginLeft="20dp"
              android:layout_width="30dp"
              android:layout_height="30dp"
              android:src="@drawable/action_search"/>
          
      </LinearLayout>


Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

												

ActionBar 自定义布局定义的更多相关文章

  1. AcitonBar 自定义布局

    Android系统中ActionBar默认的布局不美观且难于控制,通过为ActionBar自定义布局的方式可以灵活控制ActionBar. 自定义Activity主题和ActionBar样式 在新建的 ...

  2. actionBarTab-actionBarTab自定义 布局没法改变其中字体相对中间的位置

    我们经常遇到对actionBarTab 进行操作的情况.现在记录修改它的样式的方法,已经如何自定义tab的显示布局 1.在你的theme主题中添加<item name="android ...

  3. 干货之UIButton的title和image自定义布局

    当需要实现一个自定义布局图片和标题的按钮时候,不知道有多少少年直接布局了UIButton,亦或是自定义一个UIView,然后以空白UIButton.UILabel.UIImageVew作为subVie ...

  4. Collection View 自定义布局(custom flow layout)

    Collection view自定义布局 一般我们自定义布局都会新建一个类,继承自UICollectionViewFlowLayout,然后重写几个方法: prepareLayout():当准备开始布 ...

  5. 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形…)

    前言: 本篇文章不是分享collectionView的详细使用教程, 而是属于比较’高级’的collectionView使用技巧, 阅读之前, 我想你已经很熟悉collectionView的基本使用, ...

  6. OC - 30.如何封装自定义布局

    概述 对于经常使用的控件或类,通常将其分装为一个单独的类来供外界使用,以此达到事半功倍的效果 由于分装的类不依赖于其他的类,所以若要使用该类,可直接将该类拖进项目文件即可 在进行分装的时候,通常需要用 ...

  7. OC - 29.自定义布局实现瀑布流

    概述 瀑布流是电商应用展示商品通常采用的一种方式,如图示例 瀑布流的实现方式,通常有以下几种 通过UITableView实现(不常用) 通过UIScrollView实现(工作量较大) 通过UIColl ...

  8. Android:创建可穿戴应用 - 自定义布局

    创建自定义布局(Creating Custom Layouts) 本文将介绍如何创建自定义通知以及使用可穿戴UI库来创建自定义布局你同时还需要了解可穿戴设计准则(Wear Design Princip ...

  9. Swift - 使用网格(UICollectionView)的自定义布局实现复杂页面

    网格UICollectionView除了使用流布局,还可以使用自定义布局.实现自定义布局需要继承UICollectionViewLayout,同时还要重载下面的三个方法: 1 2 3 4 5 6 7 ...

随机推荐

  1. node ffmpeg 视频操作

    1,先安装ffmpeg 2,设置环境变量 3,npm install fluent-ffmpeg 4,编码 var ffmpeg = require('fluent-ffmpeg'); //视频合并 ...

  2. 一种使用gitlab的CI/CD功能实现Nginx配置更新的方法

    至于nginx的docker制作,前面已介绍过. 现在使用gitlab在线编辑的方式,可实现Nginx的自定义配置并更新. .gitlab-ci.yml内容如下: variables: project ...

  3. k8s安装之etcd备份还原yaml

    etcd备份还原方案,这种比较高级. 使用docker,自动化处理. 如果单节点备份,ETCD_ENDPOINTS一个即可. 如果多节点恢复,依次执行恢复脚本即可. apiVersion: batch ...

  4. python算法与数据结构-希尔排序算法(35)

    一.希尔排序的介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每 ...

  5. JDK源码那些事儿之ConcurrentLinkedDeque

    非阻塞队列ConcurrentLinkedQueue我们已经了解过了,既然是Queue,那么是否有其双端队列实现呢?答案是肯定的,今天就继续说一说非阻塞双端队列实现ConcurrentLinkedDe ...

  6. 性能优化处理CPU快慢问题

    经常听到有人说磁盘很慢.网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦:而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了. 最为我们熟 ...

  7. c++的动态绑定和静态绑定及多态的实现原理(摘)

    C++多态的实现原理 为了支持c++的多态性,才用了动态绑定和静态绑定.理解它们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误. 需要理解四个名词:对象的静态类型:对象在声明时采用的类型. ...

  8. Samba服务安装

    安装Samba服务   1.在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装. # yum install samba samba-client samba-swat 有依赖关 ...

  9. Mysql 的使用方法

    一 .Mysql 优势: 1.程序稳定性 :这样任意一台服务所在的机器崩溃了都不会影响数据和另外的服务. 2.数据一致性 :所有的数据都存储在一起,所有的程序操作的数据都是统一的,就不会出现数据不一致 ...

  10. 【贪心】Stripies POJ 1862

    题目描述:http://poj.org/problem?id=1862 题目大意:你有n个数要合并,每两个数x,y合并后得到2*sqrt(x*y).求最后留下的一个数的最小值. 每合并一次,就会有数被 ...