Android自定义实现微信标题栏

    前言:在android的开发中有时我们需要更个性化的标题栏,而不仅仅是系统预定义的图标加软件名,同时有时候我们需要在标题栏中实现更多功能,如添加按钮响应用户点击。这就要求我们实现自定义标题栏。下面以微信的标题栏为例:

微信界面的标题栏:

step 1:写标题栏布局文件

新建一个布局文件titleBar.xml文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="#434343"
  6. >
  7.  
  8. <TextView
  9. android:id="@+id/barText"
  10. android:layout_alignParentLeft="true"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:textColor="#FFFFFF"
  14. android:layout_centerVertical="true"
  15.  
  16. android:textSize="20sp"
  17. android:layout_marginLeft="5dp"
  18. android:text="微信(4)"
  19. />
  20.  
  21. <ImageView
  22. android:id="@+id/barAdd"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:src="@android:drawable/ic_menu_add"
  26. android:layout_alignParentRight="true"
  27. android:layout_marginRight="10dp"
  28. android:layout_centerVertical="true"
  29. />
  30.  
  31. <ImageView
  32. android:id="@+id/barSearch"
  33. android:layout_width="wrap_content"
  34. android:layout_height="wrap_content"
  35. android:src="@android:drawable/ic_menu_search"
  36. android:layout_toLeftOf="@+id/barAdd"
  37. android:layout_marginRight="20dp"
  38. android:layout_centerVertical="true"
  39. />
  40. </RelativeLayout>

step2:在源文件OnCreat中添加:设置titleBar.xml为标题栏布局

  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
  4. setContentView(R.layout.main);
  5. //设置标题布局为titlebar
  6. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
  7. }

step3:定义标题栏的风格

在drawable新建color.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <color xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <item name="android:color">#434343</item> //设置背景色
  4. </color>

在values新建titleStyle.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <style name="MyStyle" parent="android:Theme.Light">
  4. <item name="android:windowTitleSize">50dp</item>//设置宽度
  5. <item name="android:windowTitleBackgroundStyle">@drawable/color</item> //设置背景风格,否则可能有边框
  6. </style>
  7. </resources>

在AndroidManifest.xml中修改配置:

在application中添加:android:theme="@style/titleStyle"

step4:添加点击处理:

在修改源文件为:

  1. public class WeixinActivity extends Activity implements OnClickListener{
  2. /** Called when the activity is first created. */
  3. public ImageView addBtn;
  4. public ImageView searchBtn;
  5.  
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
  10. setContentView(R.layout.main);
  11. //设置标题布局为titlebar
  12. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
  13.  
  14. addBtn=(ImageView)this.findViewById(R.id.barAdd);
  15. searchBtn=(ImageView)this.findViewById(R.id.barSearch);
  16.  
  17. addBtn.setOnClickListener(this);
  18. searchBtn.setOnClickListener(this);
  19.  
  20. }
  21.  
  22. @Override
  23. public void onClick(View v) {
  24. // TODO Auto-generated method stub
  25. switch(v.getId()){
  26. case R.id.barAdd:Toast.makeText(WeixinActivity.this, "你点击了添加", Toast.LENGTH_SHORT).show();break;
  27. case R.id.barSearch:Toast.makeText(WeixinActivity.this, "你点击了搜索", Toast.LENGTH_SHORT).show();break;
  28. default:break;
  29. }
  30. }
  31. }

step5:运行

ok

这样就完成了,图片我用的系统的图片,不太美观,大家可以自己修改

Android自定义实现微信标题栏的更多相关文章

  1. Android 自定义Activity的标题栏(Titlebar)

    缺省的情况下,通常见到Activity的标题栏(Titlebar)是这样的(红色框内): HandleContacts是Activity的标题.有时候,我们希望能改变一下这样单调的状况.比如,要在标题 ...

  2. [置顶] xamarin android自定义标题栏(自定义属性、回调事件)

    自定义控件的基本要求 这篇文章就当是自定义控件入门,看了几篇android关于自定义控件的文章,了解了一下,android自定义控件主要有3种方式: 自绘控件:继承View类,所展示的内容在OnDra ...

  3. android 开发 使用自定义布局实现标题栏复用(标题栏内容自定义:使用代码实现和xml布局自定义属性2种办法实现)

    在个人学习的情况下可能很少使用自定义布局去实现大量复用的情况下,但是在一个开发工作的环境下就会使用到大量复用的自定义控件. 实现思维: 1.写一个xml的布局,用于标题栏的样式,并且添加在标题栏中你想 ...

  4. Android 自定义View合集

    自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...

  5. 自定义 Activity 的 标题栏 TitleBar

    自定义 Activity 的 标题栏 TitleBar 1. 修改标题栏的高度,背景 编辑styles.xml,添加: <?xmlversion="1.0" encoding ...

  6. Android 支付宝以及微信支付快速接入流程

    简介 随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成! 一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:ht ...

  7. Android 自定义title 之Action Bar

    Android 自定义title 之Action Bar 2014-06-29  飞鹰飞龙...  摘自 博客园  阅 10519  转 25 转藏到我的图书馆   微信分享:   Action Ba ...

  8. android自定义UI模板图文详解

    不知道大家在实际开发中有没有自定义过UI模板?今天花时间研究了一下android中自定义UI模板,与大家分享一下. 每个设计良好的App都是自定义标题栏,在自定义标题栏的过程中大部分人可能都是自定义一 ...

  9. Android:仿微信开场切换界面

    这实例很多人仿做,好实例还是不容错过!最重要是素材容易拿~ 效果: 默认3页面的切换,最后一个页面带按钮,点击进入另外一个页面 思路: 1.准备5个布局页面,1个为主函数布局页面,3个为切换的页面(其 ...

随机推荐

  1. Jmeter 指令记录

    ${__machineIP()}   获取当前本地IP地址(后面发现其实这个是在函数助手里面可以选择的)

  2. [转]Windows服务“允许服务与桌面交互”的使用和修改方法

    上一篇文章是纯 C# 代码的形式勾上 “允许服务与桌面交互” 选项的 本文转载自:http://blog.csdn.net/lanruoshui/article/details/4756408 描述: ...

  3. 使用XML-RPC进行远程文件共享

    这是个不错的练习,使用python开发P2P程序,或许通过这个我们可以自己搞出来一个P2P下载工具,类似于迅雷.XML-RPC是一个远程过程调用(remote procedure call,RPC)的 ...

  4. 搭建GlusterFS文件系统

    (1)环境准备 创建两个虚拟机配置如下 把仅主机第二张网卡配置如下: GlusterFS1 GlusterFS2 上传文件到opt目录下 文件内容如下 (2)GlusterFS安装配置 1.安装Glu ...

  5. Linux性能分析 vmstat输出

    vmstat输出     1.linux系统下vmstat输出   vmstat的输出分为以下几种模式:   (1).VM MODE (普通选项) (2).DISK MODE(-d选项) (3).DI ...

  6. CA单向认证和双向认证的区别?

    1:单向认证,内容会被串改吗?

  7. Spark学习笔记2:RDD编程

    通过一个简单的单词计数的例子来开始介绍RDD编程. import org.apache.spark.{SparkConf, SparkContext} object word { def main(a ...

  8. OpenGL chapter3 基础渲染

    3.1 基础图形管线 三种向OpenGl着色器传递渲染数据的方法:属性,Uniform和纹理.3.2 创建坐标系 3.2.1 正投影 GLFrustum::SetOrthographic(⋯⋯): 3 ...

  9. 8.rem适配

    <!DOCTYPE html> <!--lang="en" : 英语 :声明当前页面的语言类型.--> <html lang="en&quo ...

  10. left join 如何增加where条件(在on的后面),这很重要

    SELECT [学号], [姓名],[备注2],[年级],专业,[学院],[x30] FROM [总表] left join k指标体系  on  学号 = x01 where 年级='2014'