(转)Android开发之封装标题栏
文章转自 CoderAbsolom 的 http://blog.csdn.net/qq_14923661/article/details/52003447
写在前面:
标题栏这个部分,绝大多数App都有,起到一个概括本页面功能的作用,有些标题栏还具有返回上一页等额外功能。
在这里不得不表扬一下苹果的标题栏位设计,简洁美观实用,很有借鉴性
一、项目结构
主要由一个布局文件activity_title.xml和一个构造类TitleBuilder.java组成,布局文件定义标题栏样式,构造类负责设定文字内容,是否显示返回按钮等等。
二、代码设计
activity_title.xml 由一个绝对布局包裹两个图片控件和一个文本框控件组成
此处使用线性布局嵌套绝对布局,使内容可以更好地居中显示
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#1B77A8"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="50dp">
<RelativeLayout
android:id="@+id/title_bar"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_centerVertical="true"
android:visibility="gone"
android:id="@+id/title_leftIco"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/title_text"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:visibility="gone"
android:id="@+id/title_rightIco"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
</LinearLayout>
TitleBuilder.java
/**
* Created by PanZhe on 2016/7/22.
*/
public class TitleBuilder {
private View titleView;
private RelativeLayout titleBar;
private TextView text;
private ImageView leftIco;
private ImageView rightIco; /**
* 构造方法:用于获取对象
* */
public TitleBuilder(Activity context){
titleView = context.findViewById(R.id.title_bar);
text = (TextView)titleView.findViewById(R.id.title_text);
titleBar = (RelativeLayout)titleView.findViewById(R.id.title_bar);
leftIco = (ImageView)titleView.findViewById(R.id.title_leftIco);
rightIco = (ImageView)titleView.findViewById(R.id.title_rightIco);
} /**
* 用于设置标题栏文字
* */
public TitleBuilder setTitleText(String titleText){
if(!TextUtils.isEmpty(titleText)){
text.setText(titleText);
}
return this;
} /**
* 用于设置标题栏左边要显示的图片
* */
public TitleBuilder setLeftIco(int resId){
leftIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);
leftIco.setImageResource(resId);
return this;
} /**
* 用于设置标题栏右边要显示的图片
* */
public TitleBuilder setRightIco(int resId){
rightIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);
rightIco.setImageResource(resId);
return this;
} /**
* 用于设置标题栏左边图片的单击事件
* */
public TitleBuilder setLeftIcoListening(View.OnClickListener listener){
if(leftIco.getVisibility() == View.VISIBLE){
leftIco.setOnClickListener(listener);
}
return this;
} /**
* 用于设置标题栏右边图片的单击事件
* */
public TitleBuilder setRightIcoListening(View.OnClickListener listener){
if(rightIco.getVisibility() == View.VISIBLE){
rightIco.setOnClickListener(listener);
}
return this;
}
}
三、使用方法
在需要的地方引入
<include layout="@layout/activity_title"/>
在java代码中使用new方法循环设置参数
public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); new TitleBuilder(this).setTitleText("测试标题").setLeftIco(R.drawable.left).setLeftIcoListening(leftReturnListener);
} private View.OnClickListener leftReturnListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
};
}
四、效果图
(转)Android开发之封装标题栏的更多相关文章
- Android开发-取消程序标题栏或自定义标题栏
注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在Android开发中,跟据需要我们有时候需要自定义应用程序的标题栏或者取消程序的标题栏,下面本菜鸟在此记录与分享一下自己使用的方法 ...
- Android开发如何去除标题栏title(转)
去除标题栏title其实非常简单,他有两种方法,一种是在代码中添加,另一种是在AndroidManifest.xml中添加: 1.在代码中实现:在此方法setContentView(R.layout. ...
- Android开发如何去除标题栏title
虽然是一个小问题,今天遇到了,也就写下来吧.防止自己忘掉. 取消标题栏的方式有两种,一种是在代码添加,另一种是在AndroidManifest.xml里面添加. 1.在代码中实现:在此方法setCon ...
- Android开发之去掉标题栏的三种方法,推荐第三种
Android:去掉标题栏的三种方法和全屏的三种方法 第一种:一般入门的时候常常使用的一种方法 onCreate函数中增加下面代码: requestWindowFeature(Window.FEATU ...
- Android开发之封装log打印日志的工具类,实用logutils详细代码
public final class LogUtil { /** all Log print on-off */ private final static boolean all = true; /* ...
- android 开发 - 使用okhttp框架封装的开发框架
概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装.我使用Builder设计模式进行了封装形成oknet开源库. 介绍 ...
- Android开发--去掉标题栏
Android开发中为了尽可能美观,会去掉标题栏.去掉标题栏有三种方法. 一.在Activity代码里实现 在代码中实现以下方法: this.requestWindowFeature(Window.F ...
- android 开发 使用自定义布局实现标题栏复用(标题栏内容自定义:使用代码实现和xml布局自定义属性2种办法实现)
在个人学习的情况下可能很少使用自定义布局去实现大量复用的情况下,但是在一个开发工作的环境下就会使用到大量复用的自定义控件. 实现思维: 1.写一个xml的布局,用于标题栏的样式,并且添加在标题栏中你想 ...
- 史上最全系列Android开发环境搭建
一.安装JDK1.JDK下载打开网站http://www.oracle.com/technetwor ... nloads-1880260.html,选择相应的操作系统下载JDK 2.安装JDK本机是 ...
随机推荐
- ArcGIS案例学习笔记-查找重叠的多边形
ArcGIS案例学习笔记-查找重叠的多边形 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于多边形图层,查找具有重叠(相互覆盖)的面 数据: 方法: 1. ...
- C# 模拟多文件上传
原地址:http://www.cnblogs.com/greenerycn/archive/2010/05/15/csharp_http_post.html 1.客户端代码 用winform写的 pr ...
- java的acm输入输出格式+大数语法
1.类名称必须采用public class Main方式命名 2.多组输入,读取到文件尾 Scanner scan=new Scanner(System.in); while(scan.hasNext ...
- CSS 规范 命名规则
http://nec.netease.com/standard/css-practice.html
- 学习BOS物流项目第九天
1 教学计划 1.业务受理需求分析 a. 业务通知单 b.工单 c.工作单 2.创建业务受理环节的数据表 a.业务通知单 b.工单 c.工作单 3.实现业务受理自动分单 a.在CRM服务端扩展方法根据 ...
- workerman 平滑重启
<?phpuse Workerman\Worker;use Workerman\Lib\Timer; require_once '../../web/Workerman/Autoloader.p ...
- java 开学第四周
package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...
- JS----贪吃蛇游戏
在网上找到的几种例子 <!DOCTYPE html> <html > <head> <meta http-equiv="Content-Type&q ...
- 数据持久化PlayerPrefs
1.Unity3D中的数据持久化是以键值对的形式存储的,可以看作是一个字典 2.Unity3D中的值是通过键名来读取的,当值不存在时,返回默认值 3.在Unity中只支持int.float.strin ...
- 【翻译】 View Frustum Culling --1 View Frustum’s Shape
这是一些列来自lighthouse3d的视锥体裁剪教程.旨在学习总结,及便于查阅. 1.视锥体的形状 在OpenGL中,透视投影是由两个函数定义的gluPerspective和gluLookAt.我们 ...