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. MongoDB的关闭

    关闭 1,非后台运行时,关闭对话,或者ctrl+c 2,登录数据库执行:db.shutdownServer(); 3,带数据目录,关闭服务器,安全   mongod --shutdown --dbpa ...

  2. java容器三:HashMap源码解析

    前言:Map接口 map是一个存储键值对的集合,实现了Map接口的主要类有以下几种 TreeMap:用红黑树实现 HashMap:数组和链表实现 HashTable:与HashMap类似,但是线程安全 ...

  3. LGOJP1941 飞扬的小鸟

    题目链接 题目链接 题解 \(f[i][j]\)表示位置\((i,j)\)到达需要的最小点击数. \(f[i][j]=\min\{{f[i-1][j-kx]+k},f[i-1][j+y]\}\) \( ...

  4. Ecshop漏洞通杀0day【最新入侵手法】

    昨晚上翻阅一本技术书籍中,找到灵感,发现的ECshop漏洞. 搜索关键字:关键字:powered by ecshop 方法一: 普通代码: user.php?act=order_query&o ...

  5. Oracle数据库中的dual表

    select user from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间 select S ...

  6. nginx配置白名单

    配置如下: http模块: http { include mime.types; default_type application/octet-stream; #log_format main '$r ...

  7. HDFS的NameNode堆内存估算

    NameNode堆内存估算 在HDFS中,数据和元数据是分开存储的,数据文件被分割成若干个数据块,每一个数据块默认备份3份,然后分布式的存储在所有的DataNode上,元数据会常驻在NameNode的 ...

  8. Oracle建立DBLINK的详细步骤记录

    测试条件:假设某公司总部在北京,新疆有其下属的一个分公司.在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100 北京的总部有一个集中的数据库,其SID是SIDBJ,用 ...

  9. c语言实现整数转换为字符串——不考虑负数

    #include <stdio.h> #include <string.h> #define MAX_LEN 16 #define ESP 1e-5 typedef int i ...

  10. Yarn节点及作用

    1.yarn中的角色:ResourceManager.NodeManager.ApplicationMaster. ResourceManager:集群计算资源的分配,启动ApplicationMas ...