如何自定义TopBar和属性封装
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"如何自定义TopBar和属性封装",在日常操作中,相信很多人在如何自定义TopBar和属性封装问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何自定义
千家信息网最后更新 2025年01月23日如何自定义TopBar和属性封装
这篇文章主要介绍"如何自定义TopBar和属性封装",在日常操作中,相信很多人在如何自定义TopBar和属性封装问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何自定义TopBar和属性封装"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
前言
在实际工作中,当我们接到boss要做一个如下界面时
也许会有很多这样共同的界面,当然我们每个界面都写一个这样的Topbar,也是可以实现统一的效果,但是要修改的时候,那我们岂不是要废掉(what?) 我们我要写自定义基础的View封装起来使用,这样在修改的时候,我们就会省很多事。
那么我们就开始我们自己的View封装
第一步 定义自己的属性,在values文件夹中创建attrs.xml文件内容如下:
第二步 我们自定义属于我们自己的View
/** * @author :huangxianfeng on 2017/3/14. * 第二步:创建自己的View * 自定义自己的View,TopBar的模板,不能在每个界面都修改此界面 */public class Topbar extends RelativeLayout { private Button leftButton,rightButton; private TextView tvTitle; private int leftTextColor; private Drawable leftBackground; private String leftText; private int rightTextColor; private Drawable rightBackground; private String rightText; private float titleTextSize; private int titleTextColor; private String title; private LayoutParams leftParams,rightParams,titleParams; private topbarClickListener listener; /** * 创建一个空外部调用的接口 */ public interface topbarClickListener{ public void leftClick(); public void rightClick(); } public void setOnTopbarClickListener(topbarClickListener listener){ this.listener = listener; } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public Topbar(final Context context, AttributeSet attrs) { super(context, attrs); //包含了自己所有的自定义的属性 TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.Topbar); //从属性中提取自定义的属性 leftTextColor = ta.getColor(R.styleable.Topbar_leftTextColor, 0); leftBackground = ta.getDrawable(R.styleable.Topbar_leftBackground); leftText = ta.getString(R.styleable.Topbar_leftText); rightTextColor = ta.getColor(R.styleable.Topbar_rightTextColor, 0); rightBackground = ta.getDrawable(R.styleable.Topbar_rightBackground); rightText = ta.getString(R.styleable.Topbar_rightText); titleTextSize = ta.getDimension(R.styleable.Topbar_titleTextSize, 0); titleTextColor = ta.getColor(R.styleable.Topbar_titleNameTextColor, 0); title = ta.getString(R.styleable.Topbar_titleName); ta.recycle();//进行回收 //创建自定义的控件 leftButton = new Button(context); rightButton = new Button(context); tvTitle = new TextView(context); //设置属性 leftButton.setTextColor(leftTextColor); leftButton.setBackground(leftBackground); leftButton.setText(leftText); rightButton.setTextColor(rightTextColor); rightButton.setBackground(rightBackground); rightButton.setText(rightText); tvTitle.setTextColor(titleTextColor); tvTitle.setTextSize(titleTextSize); tvTitle.setText(title); tvTitle.setGravity(Gravity.CENTER); setBackgroundColor(0xFFF59563); leftParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); leftParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, TRUE);//增加一个规则,让控件左边显示 addView(leftButton, leftParams);//此时完成一个View控件的添加,添加到ViewGroup中去了 rightParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, TRUE);//增加一个规则,让控件右边显示 addView(rightButton, rightParams);//此时完成一个View控件的添加,添加到ViewGroup中去了 titleParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); titleParams.addRule(RelativeLayout.CENTER_IN_PARENT, TRUE);//增加一个规则,让控件居中显示 addView(tvTitle, titleParams);//此时完成一个View控件的添加,添加到ViewGroup中去了 leftButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //我们这边只进行调用这边的暴露的方法即可 listener.leftClick(); } }); rightButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { listener.rightClick(); } }); } /** * 设置左边按钮是否显示 * @param flag */ public void setLeftIsvisable(boolean flag){ if (flag){ leftButton.setVisibility(View.VISIBLE); }else{ leftButton.setVisibility(View.GONE); } } /** * 设置右边按钮是否显示 * @param flag */ public void setRightIsvisable(boolean flag){ if (flag){ rightButton.setVisibility(View.VISIBLE); }else{ rightButton.setVisibility(View.GONE); } }}
此View很简单,只是一些简单的功能实现,有自己想要添加的方法,都可以自行更改。
第三步 如何使用我们以上的内容呢?其实简单,只要在我们activity_main.xml布局添加即可
//在添加自己的自定义属性的时候,要先加入一个xmln:custom="http://schemas.android.com/apk/res-auto" //以便来引用自己的属性,以下scustom就是引用的自己的属性
在上面代码中,有custom这个包的依赖是为什么呢?其实就是自定义的属性依赖名称,为了和android区分开来,但是要在最外层父布局中添加
xmlns:custom="http://schemas.android.com/apk/res-auto"
来依赖属性类别。
第四步 就可以在我们MainActivity中使用我们的Topbar了
public class MainActivity extends AppCompatActivity { private Topbar mTopbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initUI(); } private void initUI() { mTopbar = (Topbar)findViewById(R.id.topbar); mTopbar.setOnTopbarClickListener(new Topbar.topbarClickListener() { @Override public void leftClick() { Toast.makeText(MainActivity.this,"leftClick",Toast.LENGTH_SHORT).show(); } @Override public void rightClick() { Toast.makeText(MainActivity.this,"rightClick",Toast.LENGTH_SHORT).show(); } }); mTopbar.setLeftIsvisable(true); }}
到此,关于"如何自定义TopBar和属性封装"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
属性
控件
封装
界面
学习
方法
时候
规则
内容
右边
就是
布局
按钮
文件
更多
帮助
实用
接下来
从属性
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全管理员的待遇
培养学生网络安全活动
法律 思修 网络安全
铜陵ios软件开发招聘信息
软件开发 单一来源
宁河软件开发公司有哪些
csgo进不了服务器怎么办
网络安全是网警吗
前端列表传到数据库
兰州公安网络安全宣传
如何考网络技术员操作证
单机数据库技术架构
北京医院互联网医院卓健科技
柳残阳小说软件开发
平安金服软件开发怎么样
街道办做好网络安全报告
精灵觉醒服务器维修
java计算机界面和数据库
软件开发方法分几大类
网络安全知识一览表
网络安全岗位面试题
法律 思修 网络安全
数据库mc和hd
数据库产业链
我和网络安全论文
吐鲁番有dns服务器吗
阿里云的服务器是不是合法的
街道办做好网络安全报告
TAQTAQ下载软件开发
华为网络技术入门