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. 《The One!团队》:BETA Scrum metting3

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报告:(3) ...

  2. (java)Jsoup爬虫学习--获取智联招聘(老网站)的全国java职位信息,爬取10页

    Jsoup爬虫学习--获取智联招聘(老网站)的全国java职位信息,爬取10页,输出 职位名称*****公司名称*****职位月薪*****工作地点*****发布日期 import java.io.I ...

  3. Spring源码窥探之:Condition

    采用注解的方式来注入bean 1. 编写config类 /** * @author 70KG * @Title: ConditionConfig * @Description: * @date 201 ...

  4. java中equals和==的使用

    ==可以用来比较基本数据类型和引用数据类型,在进行基本数据类型的比较时,比较的具体的值,进行引用数据类型比较,比较的是引用指向对象在内存中的地址,但是String进行比较需要注意 package cn ...

  5. Gvim打造python编辑器,附自己的配置文件

    一. Gvim简介 Gvim的G指的是GUI,也就是图形化界面.相当于在vim包了一层图形化界面,相比之下gvim拥有更丰富的颜色和字体,还有菜单和滚动条,以及更友好的鼠标操作等,除此之外和vim并无 ...

  6. python爬虫——数据爬取和具体解析

    关于正则表达式的更多用法,可参考链接:https://blog.csdn.net/weixin_40040404/article/details/81027081 一.正则表达式: 1.常用正则匹配: ...

  7. 在idea中调试spark程序-配置windows上的 spark local模式

    spark程序大致有如下运行模式: standalone模式:spark自带的模式 spark on yarn:利用hadoop yarn来做集群的资源管理 local模式:主要在测试的时候使用, 这 ...

  8. Linux 内存Cache和Buffer理解

    在 Linux 系统中,我们经常用 free 命令来查看系统内存的使用状态.在一个 RHEL6 的系统上,free 命令的显示内容大概是这样一个状态:   [root@tencent64 ~]# fr ...

  9. php使用WebUploader做大文件的分块和断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  10. Linux中三种SCSI target的介绍之各个target的优劣

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...