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. top命令定位CPU高占用代码

    步骤如下: 1.使用top命令定位异常进程.可以看见12836的CPU和内存占用率都非常高 2.使用top -H -p 进程号查看异常线程 3.使用printf "%x\n" 线程 ...

  2. 03 c++中this指针

    概念: 成员函数:在类中定义的函数.普通函数无法被继承,成员函数可以被继承.友元函数相当于普通函数. 友元函数不是类的组成,没有this指针,必须将成员函数操作符作为参数传递对象. 在c++中成员函数 ...

  3. rocketmq那些事儿之入门基础

    分布式消息队列中间件作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性,其复杂性可见一斑,作为核心组件,有必要去深入了解学习 前言 分布式消息队列中间件主要具有以下优势: 削峰 ...

  4. phpcms站点部署

    1 wamp部署使用wamp2.4以下版本. 2.4版本自带的php5.4以上底层变化,phpcms运行不了. 2.2版自带的php5.3.10可以兼容. 2 安装配置时,尽量为每个站点配置(http ...

  5. linux下新磁盘创建lvm、扩容lvm

    1.首先查看磁盘fdisk -l2.进入磁盘fdisk /dev/sdbn 创建新磁盘p 创建主分区创建分区ID 1-4为主分区根据提示选择磁盘开始位置(默认空格就好)选择结束位置(新增磁盘大小)t ...

  6. NOI.ac 模拟赛20181103 排队 翘课 运气大战

    题解 排队 20% 1≤n≤20,1≤x,hi≤201\le n\le 20, 1\le x,h_i\le 201≤n≤20,1≤x,hi​≤20 随便暴力 50% 1≤n≤2000,1≤x,hi≤1 ...

  7. BurpSuite Intruder模块匹配返回包内容

    很多时候burpsuite intruder爆破我们是看返回包的长度,那么如何根据返回包的内容来做筛选呢? 这里我用的本地某cms环境做个演示 Intruder模块怎么用的不用介绍了吧 直接进入正题 ...

  8. javascript之大文件分段上传、断点续传

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  9. Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MB Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定 ...

  10. 安装wazuh-agent

    安装wazuh-agent 1. windows 下载地址:https://packages.wazuh.com/3.x/windows/wazuh-agent-3.9.5-1.msi 安装运行 设置 ...