android标题返回,【Android开发】自定义控件——带返回键标题栏
内容简概
一、预期效果
二、通过xml方式创建
三、通过代码创建
四、最终效果
具体内容
一、预期效果
二、通过xml方式创建
(一)自定义控件属性
首先我们需要创建一个管理自定义属性的xml文件。
然后在文件中规定我们想要实现的属性,颜色、文本和位置等都属于资源文件(resource)。
(二)创建控件
接着到activity_main.xml文件中调用自定义属性创建控件,采用RelativeLayout布局。
android:layout_width="match_parent"
android:layout_height="64dp"
app:my_background="#877466"
app:show_back="true"
app:back_title="返回主页"
app:back_position="1"/>
(三)实现自定义控件
最后在MainActivity中设置layout布局。自定义内容均在activity_main.xml文件中修改。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
三、通过代码创建
(一)自定义控件属性
这一步过程与上述xml方式创建的第一步相同。
(二)创建控件
首先在图中位置新建一个用于创建控件的Java Class。
接着在创建的类中创建控件。
public class NavigationBar extends RelativeLayout {
// 定义一个变量保存外部设置的颜色 默认灰色
private int MyBackground = Color.GRAY;
// 记录是否需要返回按钮
private boolean show_back = false;
// 返回按钮
private Button back;
// 返回按钮的布局属性
LayoutParams params;
// 使用Java代码创建控件
public NavigationBar(Context context) {
// super(context);
// init();
this(context,null);
}
// 使用xml创建控件
public NavigationBar(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}
// 初始化控件
private void init(Context context, AttributeSet attr){
// 设置横向布局
// setOrientation(LinearLayout.HORIZONTAL);
// 设置背景
setBackgroundColor(Color.GRAY);
// 设置内容垂直居中
setGravity(Gravity.TOP);
// 判断是否是XML配置的
if (attr != null){
// 从attr里提取xml里面配置的所有属性
TypedArray typeArray = context.obtainStyledAttributes(attr,R.styleable.NavigationBar);
// 提取需要的属性
int color = typeArray.getColor(R.styleable.NavigationBar_my_background, Color.rgb(87,74,66));
// 是否需要返回按钮
boolean show = typeArray.getBoolean(R.styleable.NavigationBar_show_back,false);
// 是否需要标题
String title = typeArray.getString(R.styleable.NavigationBar_back_title);
// 取返回按钮的位置
int position = typeArray.getInteger(R.styleable.NavigationBar_back_position,1);
// 使用数据
setMyBackground(color);
setShow_back(show,title);
setPosition(position);
}
}
public int getMyBackground() {
return MyBackground;
}
public void setMyBackground(int myBackground) {
this.MyBackground = myBackground;
// 将外部传递过来的颜色 设置为背景颜色
setBackgroundColor(MyBackground);
}
public boolean isShow_back() {
return show_back;
}
public void setShow_back(boolean show_back,String title) {
this.show_back = show_back;
if (show_back == true){
// 创建返回按钮
back = new Button(getContext());
// 设置按钮的布局属性
params = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int) (10*getResources().getDisplayMetrics().density);
// 设置标题
if(title != null){
back.setText(title);
}else {
back.setText("Back");
}
// 添加控件
addView(back,params);
}
}
/**
* 区别左右
*/
public interface myPosition{
int LEFT = 0;
int RIGHT = 1;
}
/**
* 设置按钮位置
* @param position LEFT RIGHT
*/
public void setPosition(int position){
// 判断是否有back按钮
if (back != null){
if (position == myPosition.LEFT){
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
}else {
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
}
}
}
}
(三)实现自定义控件
最后在MainActivity中实例化对象。自定义内容均在test函数中修改。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
test();
}
private void test(){
// 代码方式创建控件
NavigationBar bar = new NavigationBar(this);
// 设置背景颜色
bar.setBackgroundColor(Color.rgb(87,74,66));
// 设置返回按钮
bar.setShow_back(true,"返回主页");
// 设置显示的位置,0为左,1为右
bar.setPosition(0);
// 让当前这个控件作为activity的主视图
setContentView(bar);
}
}
四、最终效果
相同属性:
①show_back="true"
②back_title="返回主页"
③my_background="#877466"
不同属性:
①back_position="0" // 按钮在左边
②back_position="1" // 按钮在右边
(一)xml方式创建
(二)代码方式创建
android标题返回,【Android开发】自定义控件——带返回键标题栏相关推荐
- java无参_Java中无参无返回和无参带返回的类型方法
在前面的文章中,我们学习了java中方法的定义.分类及调用的相关知识.知道了java中的方法其实可以叫做函数,目的是实现某些我们想要的功能,也知道了java中方法的分类共有四种:无参无返回.无参带返回 ...
- 小程序手势返回以及手机自带返回功能问题解决思路
一般苹果手机不会自带手势返回以及原生手机返回按钮,所以我们的组件返回功能是可以去做一些自定义的事情的. 但是安卓手机大部分有原生手机自带的返回按钮以及手势返回,这个时候我们可以通过 onUnload生 ...
- android 标题样式,Android定义各种样式的标题栏:requestWindowFeature()
最近在网上看到一篇介绍Android window的requestWindowFeature()的使用方法,共享出来大家学习学习 requestWindowFeature(Window.FEATURE ...
- Mysql带返回值与不带返回值的2种存储过程
过程1:带返回值: 1 drop procedure if exists proc_addNum; 2 create procedure proc_addNum (in x int,in y int, ...
- Android重写菜单增加系统自带返回键
条件:当前项目导入了ActionBarSherlock这个jar包,这个jar包的作用为了程序的兼容性,考虑低版本的问题. 学习ActionBarSherlock参考博客链接:http://blog. ...
- android 标题图标,android 中 actionbar 常用方法。设置标题,隐藏图标等
设置标题: actionBar.setTitle("关于我们"); 使返回箭头出现 actionBar.setDisplayHomeAsUpEnabled(true); 监听返回按 ...
- C++ 多线程之带返回值的线程处理函数
写在前面: 又是学C扎扎的一天,C扎扎学起来果然扎手.如果你能坚持看到文章最后,你会发现,好吧有可能你啥也发现不了,因为后面什么也没有~~~ 目录 1. 使用 async 函数创建线程 ...
- 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )
文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )
文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...
最新文章
- java向某一IP发送消息_javaTCP如何将数据发送给指定IP的客户端(求代码)谢谢! 爱问知识人...
- 【C#技术】一篇文章搞掂:Infragistics组件库
- 东农计算机应用与技术离线作业,东农16春《计算机应用与技术》在线作业.doc
- 字节数组输入流读取操作
- java 分布式sql引擎_分布式SQL查询引擎 Presto 性能调优的五大技巧
- 学员使用移动端进行自学的视频动画html,Html5移动端获奖无缝滚动动画实现
- 初识JS-基础中的基础
- [转载]Qt之模型/视图(自定义风格)_vortex_新浪博客
- linux用c++获取mac地址,网卡地址,网口地址,网卡序号ip地址,不使用 ioctl(sock, SIOCGIFCONF, ifc)获取网络接口名称,这个接口有时会返回-1获取不到,换方法获取
- python类的继承代码_python--类的继承
- WindowsNT/2000的系统日志文件
- eyoucms如何管理栏目
- 水果店的售价应该怎么来定,水果店怎样确定价格
- 播布客学习视频_C学习笔记_simple
- 小小靖Java成长日记02
- 南大庄建军计算机学院讲座,2015年全国大学生电子设计竞赛工作经验交流会汇报_南京大学庄建军.ppt...
- mount 挂载 img
- 漂浮式半潜风机(一)稳性分析
- 校准报告确认有哪些方法?为什么需要进行确认?
- 项目场景: gyp verb check python checking for Python executable python2 in the PATH
热门文章
- java请模拟出双重定时器_Java多线程基础 - osc_czmaebyq的个人空间 - OSCHINA - 中文开源技术交流社区...
- 什么是python编程例子_案例详解:优化Python编程的4个妙招
- win10专业版虚拟机配置服务器,虚拟机专用专业版win10 账号密码
- Kubernetes 集群 DNS 服务发现原理
- 如何让快递更快?菜鸟自研定时任务调度引擎首次公开
- 关于类DOTA游戏多样化技能系统的设计思考
- Love2D游戏引擎制作贪吃蛇游戏
- 2022年3月23日15:51:00——百度2班留存
- SQL Editor and reconnect【mysql(workbench)更新数据时候的一个异常】【Error Code:1175】
- RedHat5.5_X64 Linux安装oracle 11.2.0.3 报错