本文为大家分享了Android创建自定义控件的具体代码,供大家参考,具体内容如下

1、仿iPhone 的风格,在界面的顶部放置一个标题栏。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="#2197db" android:orientation="horizontal" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> <Button android:id="@+id/title_back" android:layout_width="90dp" android:layout_height="40dp" android:layout_gravity="center" android:layout_margin="5dp" android:text="返回" /> <TextView android:id="@+id/title_text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:gravity="center" android:text="标题" android:textColor="#fff" android:textSize="24sp" /> <Button android:id="@+id/title_edit" android:layout_width="90dp" android:layout_height="40dp" android:layout_gravity="center" android:layout_margin="5dp" android:text="确定" /> </LinearLayout> </RelativeLayout>
标题栏布局已经编写完成,剩下的就是如何在程序中使用这个标题栏。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <include layout="@layout/title" /> </LinearLayout> //我们只需要通过一行 include语句将标题栏布局引入进来就可以了。
然后在 MainActivity 中将系统自带的标题栏隐藏掉
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
}
}
我们还是需要在每个活动中为这些控件单独编写一次事件注册的代码。比如说标题栏中的返回按钮,其实不管是在哪一个活动中,这个按钮的功能都是相同的,即销毁掉当前活动,这种情况最好是使用自定义控件的方式来解决。
新建自定义的标题栏控件:
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
}
}
我们重写了 LinearLayout 中的带有两个参数的构造函数,在布局中引入 TitleLayout控件就会调用这个构造函数。然后在构造函数中需要对标题栏布局进行动态加载,这就要借助 LayoutInflater 来实现了。通过 LayoutInflater 的 from()方法可以构建出一个 LayoutInflater对象,然后调用 inflate()方法就可以动态加载一个布局文件,inflate()方法接收两个参数,第一个参数是要加载的布局文件的 id,这里我们传入 R.layout.title,第二个参数是给加载好的布局再添加一个父布局,这里我们想要指定为 TitleLayout,于是直接传入this
在布局文件中添加这个自定义控件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.example.xxxxxx.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content" ></com.example.xxxxxx.TitleLayout> </LinearLayout>
我们来尝试为标题栏中的按钮注册点击事件,修改 TitleLayout中的代码
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
Button titleBack = (Button) findViewById(R.id.title_back);
Button titleEdit = (Button) findViewById(R.id.title_edit);
titleBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Activity) getContext()).finish();
}
});
titleEdit.setOnClickListener(new OnClickListener() {
public static final String TAG = "";
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "重新运行程序", Toast.LENGTH_SHORT).show();
Log.i(TAG, "111 ");
}
});
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 自定义控件
# Android自定义控件之创建可复用的组合控件
# Android自定义控件之继承ViewGroup创建新容器
# android自定义控件创建翻页接口详细代码
# android 自定义控件 自定义属性详细介绍
# android开发教程之自定义控件checkbox的样式示例
# android自定义控件和自定义回调函数步骤示例
# Android中自定义控件的declare-styleable属性重用方案
# 详解Android自定义控件属性TypedArray以及attrs
# Android开发之自定义控件用法详解
# Android自定义控件之圆形/圆角的实现代码
# 标题栏
# 自定义
# 加载
# 就可以
# 栏中
# 都是
# 就会
# 是在
# 第一个
# 这就
# 第二个
# 这种情况
# 写了
# 只需要
# 大家分享
# 使用这个
# 具体内容
# 大家多多
# 中为
# 再添
相关文章:
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
制作门户网站的参考文献在哪,小说网站怎么建立?
,柠檬视频怎样兑换vip?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
深入理解Android中的xmlns:tools属性
如何零成本快速生成个人自助网站?
智能起名网站制作软件有哪些,制作logo的软件?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
建站主机与虚拟主机有何区别?如何选择最优方案?
Swift中循环语句中的转移语句 break 和 continue
如何用IIS7快速搭建并优化网站站点?
建站VPS选购需注意哪些关键参数?
,想在网上投简历,哪几个网站比较好?
建站之星备案是否影响网站上线时间?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
XML的“混合内容”是什么 怎么用DTD或XSD定义
网站制作模板下载什么软件,ppt模板免费下载网站?
如何快速搭建FTP站点实现文件共享?
如何在Ubuntu系统下快速搭建WordPress个人网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
招商网站制作流程,网站招商广告语?
深圳网站制作培训,深圳哪些招聘网站比较好?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
建站之星后台管理如何实现高效配置?
完全自定义免费建站平台:主题模板在线生成一站式服务
黑客入侵网站服务器的常见手法有哪些?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何在Windows环境下新建FTP站点并设置权限?
如何快速搭建高效WAP手机网站吸引移动用户?
如何配置FTP站点权限与安全设置?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
小程序网站制作需要准备什么资料,如何制作小程序?
建站主机核心功能解析:服务器选择与网站搭建流程指南
建站主机无法访问?如何排查域名与服务器问题
建站之星logo尺寸如何设置最合适?
在线教育网站制作平台,山西立德教育官网?
建站之星安装步骤有哪些常见问题?
深圳网站制作平台,深圳市做网站好的公司有哪些?
建站之星代理商如何保障技术支持与售后服务?
如何在Golang中使用replace替换模块_指定本地或远程路径
网站代码制作软件有哪些,如何生成自己网站的代码?
建站之星如何助力企业快速打造五合一网站?
常州企业建站如何选择最佳模板?
MySQL查询结果复制到新表的方法(更新、插入)
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
红河网站制作公司,红河事业单位身份证如何上传?
如何在景安云服务器上绑定域名并配置虚拟主机?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
如何选择PHP开源工具快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。