全网整合营销服务商

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

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


相关文章: 如何快速搭建高效简练网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  招贴海报怎么做,什么是海报招贴?  建站之星后台管理:高效配置与模板优化提升用户体验  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何快速生成ASP一键建站模板并优化安全性?  利用JavaScript实现拖拽改变元素大小  Python路径拼接规范_跨平台处理说明【指导】  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  网站制作新手教程,新手建设一个网站需要注意些什么?  建站之星展会模板:智能建站与自助搭建高效解决方案  建站之星2.7模板:企业网站建设与h5定制设计专题  学校免费自助建站系统:智能生成+拖拽设计+多端适配  电商平台网站制作流程,电商网站如何制作?  如何实现建站之星域名转发设置?  C++时间戳转换成日期时间的步骤和示例代码  建站之星客服服务时间及联系方式如何?  如何通过FTP空间快速搭建安全高效网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  股票网站制作软件,网上股票怎么开户?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何在云主机上快速搭建网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  建站之星代理费用多少?最新价格详情介绍  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何高效生成建站之星成品网站源码?  C#如何在一个XML文件中查找并替换文本内容  装修招标网站设计制作流程,装修招标流程?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  c++ stringstream用法详解_c++字符串与数字转换利器  广东专业制作网站有哪些,广东省能源集团有限公司官网?  如何制作算命网站,怎么注册算命网站?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何在局域网内绑定自建网站域名?  如何用花生壳三步快速搭建专属网站?  香港服务器租用费用高吗?如何避免常见误区?  浅谈Javascript中的Label语句  建站之星微信建站一键生成小程序+多端营销系统  青岛网站建设如何选择本地服务器?  制作公司内部网站有哪些,内网如何建网站?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何在IIS中新建站点并配置端口与物理路径?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何在云主机快速搭建网站站点? 

您的项目需求

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