Android自定义实现微信标题栏

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

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

时间: 2024-11-03 12:16:56

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

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

缺省的情况下,通常见到Activity的标题栏(Titlebar)是这样的(红色框内): HandleContacts是Activity的标题.有时候,我们希望能改变一下这样单调的状况.比如,要在标题栏中增加一个用于美化界面的图标.增一个输入框或按钮之类的,怎样才能做到这一点呢?我们不妨来看一个实际的例子. 1.首先如下创建一个Android项目 2.将图片magnifier.png拖入该项目的res/drawable-mdpi文件夹下.magnifier.png图片的样子是这样的: 3.在该项

android自定义标题栏,背景颜色填充满

设置标题栏背景 1> 准备背景图片: background_pix.png 注:用背景图片比用颜色好处,可以让背景看起来有凹凸感. 2> drawable文件夹下放xml文件 bitmap_repeat.xml <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android"

android 自定义titlebar标题栏冲突问题

android自定义标题栏的时候,使用下面方法: requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.mycustomtitle); } logcat报错"You cannot combine custom titles with other title fea

android自定义UI模板图文详解

不知道大家在实际开发中有没有自定义过UI模板?今天花时间研究了一下android中自定义UI模板,与大家分享一下. 每个设计良好的App都是自定义标题栏,在自定义标题栏的过程中大部分人可能都是自定义一个标题的xml文件,然后在需要的地方直接通过include来引用,这比起在每个布局文件中写标题栏已经进化很多了,但仍然不是最简单有效的方法,我们为什么不能自定义一个标题控件呢?今天就带大家自己做一个标题栏控件.效果图如下: 开始啦: 第一步:自定义xml属性 新建一个android项目,在value

Android自定义View,你必须知道的几点

为什么我们觉得自定义View是学习Android的一道坎? 为什么那么多Android大神却认为自定义View又是如此的简单? 为什么google随便定义一个View都是上千行的代码? 以上这些问题,相信学Android的同学或多或少都有过这样的疑问. 那么,看完此文,希望对你们的疑惑有所帮助. 回到主题,自定义View ,需要掌握的几个点是什么呢? 我们先把自定义View细分一下,分为两种 1) 自定义ViewGroup 2) 自定义View 其实ViewGroup最终还是继承之View,当然

Android 自定义View合集

自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/Mr-XiaoLiang 自定义控件三部曲 http://blog.csdn.net/harvic880925?viewmode=contents Android 从0开始自定义控件之View基础知识与概念 http://blog.csdn.net/airsaid/article/details/5

Android自定义组件系列【10】——随ViewPager滑动的导航条

昨天在用到ViewPager实现滑动导航的时候发现微信的导航条效果是跟随ViewPager的滑动而动的,刚开始想了一下,感觉可以使用动画实现,但是这个滑动是随手指时时变化的,貌似不可行,后来再网上搜了一下,找到一个开源代码,结果打开一看大吃一惊,这么简单的效果代码居然大概有300多行,太占手机存储空间了!后来自己干脆重写ViewGroup使用scrollTo方法实现了一下,具体实现过程如下: package com.example.slideupdownviewpage; import andr

(转载)Android自定义标签列表控件LabelsView解析

Android自定义标签列表控件LabelsView解析 作者 donkingliang 关注 2017.03.15 20:59* 字数 759 阅读 406评论 0喜欢 3 无论是在移动端的App,还是在前端的网页,我们经常会看到下面这种标签的列表效果: 标签列表 标签从左到右摆放,一行显示不下时自动换行.这样的效果用Android源生的控件很不好实现,所以往往需要我们自己去自定义控件.我在开发中就遇到过几次要实现这样的标签列表效果,所以就自己写了个控件,放到我的GitHub,方便以后使用.有

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

简介 随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成! 一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:https://open.alipay.com/platform/home.htm 支付宝首页 这里 有两个需要注意的地方 一个是管理中心,另外一个是我的支付宝 管理中心: 管理中心 管理中心 我们需要 创建一个应用 提交给支付宝进行审核. 我的支付宝: 在这里我的支付宝 是一个商户版,一会我们会需要在