全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android自定义控件的创建方法

本文为大家分享了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自定义控件之圆形/圆角的实现代码  # 标题栏  # 自定义  # 加载  # 就可以  # 栏中  # 都是  # 就会  # 是在  # 第一个  # 这就  # 第二个  # 这种情况  # 写了  # 只需要  # 大家分享  # 使用这个  # 具体内容  # 大家多多  # 中为  # 再添 


相关文章: 建站之星代理如何获取技术支持?  个人网站制作流程图片大全,个人网站如何注销?  存储型VPS适合搭建中小型网站吗?  西安大型网站制作公司,西安招聘网站最好的是哪个?  浅析上传头像示例及其注意事项  建站之星后台管理系统如何操作?  如何制作算命网站,怎么注册算命网站?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  如何在西部数码注册域名并快速搭建网站?  建站之星安装模板失败:服务器环境不兼容?  如何快速查询域名建站关键信息?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  建站之星安装后如何配置SEO及设计样式?  大连网站制作公司哪家好一点,大连买房网站哪个好?  制作门户网站的参考文献在哪,小说网站怎么建立?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何快速搭建安全的FTP站点?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  建站主机是否等同于虚拟主机?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在万网ECS上快速搭建专属网站?  如何通过可视化优化提升建站效果?  韩国服务器如何优化跨境访问实现高效连接?  b2c电商网站制作流程,b2c水平综合的电商平台?  建站之星如何配置系统实现高效建站?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何在企业微信快速生成手机电脑官网?  制作证书网站有哪些,全国城建培训中心证书查询官网?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  用v-html解决Vue.js渲染中html标签不被解析的问题  想学网站制作怎么学,建立一个网站要花费多少?  如何在云主机快速搭建网站站点?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  如何快速搭建响应式可视化网站?  音乐网站服务器如何优化API响应速度?  C++中引用和指针有什么区别?(代码说明)  网站制作需要会哪些技术,建立一个网站要花费多少?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  图册素材网站设计制作软件,图册的导出方式有几种?  宁波自助建站系统如何快速打造专业企业网站?  建站主机选虚拟主机还是云服务器更好?  宝塔新建站点报错如何解决?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  三星网站视频制作教程下载,三星w23网页如何全屏?  建站主机功能解析:服务器选择与快速搭建指南  小建面朝正北,A点实际方位是否存在偏差? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。