自定义视图(组合控件)

前言

  Android自定义控件主要分为两种,一种是通过继承View来实现自定义控件,另一种是通过组合已有到控件来实现自定义控件,上篇文章自定义视图(继承View)我们介绍了下继承View到方式,这篇文章简单介绍下组合控件来实现自定义控件。

  有些情况我们需要通过组合已有到控件来实现特定功能到控件组建,比如一个应用到题头,大概样式如下
    

Java代码

  通过组合控件来实现自定义控件到方式,是通过继承一个ViewGrou对象来实现,比如LinearLayout, FrameLayout, RelativeLayout,等等,简单实现如下所示

  

 1 public class CombinView extends RelativeLayout {
 2
 3     public CombinView(Context context, AttributeSet attrs) {
 4         super(context, attrs);
 5         LayoutInflater inflater = (LayoutInflater)context.getSystemService    (Context.LAYOUT_INFLATER_SERVICE);
 6         RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.custom_view,this);
 7
 8     }
 9
10 }

  其中需要注意到是RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.custom_view,this);方法,第二个参数this,用来表明inflate出来到layout添加到当前对象

custom_view.xml

  下面一段代码就是自定义视图的布局文件内容,没有什么特别的,如下所示

  

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="wrap_content" >
 5
 6     <TextView
 7         android:id="@+id/tvShow"
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:text="返回" />
11
12     <TextView
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:layout_alignParentRight="true"
16         android:text="设置" />
17
18     <RelativeLayout
19         android:layout_width="match_parent"
20         android:layout_height="wrap_content" >
21
22         <TextView
23             android:layout_width="match_parent"
24             android:layout_height="wrap_content"
25             android:gravity="center_horizontal"
26             android:text="标题" />
27     </RelativeLayout>
28
29 </RelativeLayout>

后记

  这样的话,一个简单的组合自定义视图就实现完成了,这篇和上篇文章介绍了自定义视图的一些东西,虽然我们实现了自定义控件,但是还有一点没有提到,就是如何给自己的控件定制自己的属性,有了自己的属性才算完整,在下篇会简单介绍下自定义属性的一些东西。

原文地址:http://www.cnblogs.com/luoaz/p/3983674.html

时间: 2024-08-09 01:58:34

自定义视图(组合控件)的相关文章

Android中自定义组合控件

Android中自定义控件的情况非常多,一般自定义控件可以分为两种:继承控件及组合控件.前者是通过继承View或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简化和代码的重用. 本篇文章主要介绍自定义组合控件,继承控件后续有机会再述. 自定义组合控件一般来说都是以ViewGroup及其子类(LinearLayout.RelativeLayout.FrameLayout等)为主,内部嵌套其他控件,来组合成一个新的控件,实现一些特定的需要,可以是代码简化,结构

自定义组合控件和在自定义控件中使用自定义属性

今天,整理了一下我平时的笔记,写一个比较简单的自定义组合控件,仅供小白参考,大神请绕道,希望能够对大家有一些帮助 首先,得明白为什么我们需要自定义组合控件,它是因为原有控件并不能满足开发的需求,或者说并不能达到我们想要的一种效果,这个时候,就需要我们自己定义一些控件,以达到目的 ![先来看一下效果](http://img.blog.csdn.net/20160716224219109) 个人总结自定义控件的步骤: 1.先写一个布局,这里我用的是一个相对布局,我这里的相对布局就是根布局了 <?xm

自定义组合控件及自定义属性

1.声明一个View对象继承相对布局或线性布局或其他的ViewGroup: 2.在自定义的View对象里面重写它的构造方法,在构造方法里面就把布局都初始化完毕: 3.根据业务需求 添加一些api方法,扩展自定义的组合控件: 4.扩展自定义属性: 5.声明自定义属性的命名空间: xmlns:android="http://schemas.android.com/apk/res/android"(系统自带的命名空间) xmlns:mAttrs="http://schemas.an

Android 自定义组合控件小结

引言 接触Android UI开发的这段时间以来,对自定义组合控件有了一定的了解,为此小结一下,本文小结内容主要讨论的是如何使用Android SDK提供的布局和控件组成一个功能完整组合控件并将其封装为面向对象的类,而并非讨论如何继承自SDK提供的控件类(比如TextView),对其进行自定义扩展的问题. 进入正题前,我们先来看一组功能需求 假设在手机需求上,那么如上三个界面我们可以使用三个Activity,每个Activity一个布局文件,实现起来比较独立,但是假设在Android pad上要

android:自定义组合控件Weight(高仿猫眼底部菜单栏)

在我们实际开发当中,会碰见一些布局结构类似或者相同的界面,例如应用的设置界面.tab按钮界面等.这时候,对于初学者来说,xml里面一个个绘制出来或许是最初的想法:可能随着经验的积累,又学会一招,就是使用include标签,导入类似或者相同的布局,提高了性能又减少了代码:再以后呢,自定义控件又可以实现这一目的.本文就是简单的使用自定义的组合控件模仿猫眼底部菜单栏. 1.自定义组合控件属性:在res/values目录下创建attrs.xml文件 <declare-styleable name="

自定义组合控件的步骤

1.声明一个View对象 继承相对布局,或者线性布局 或者其他的ViewGroup. 2.在自定义的View对象里面重写它的构造方法.在构造方法里面就把布局都初始化完毕. 3.根据业务需求 添加一些api方法,扩展自定义的组合控件: 4.希望在布局文件里面 可以自定义一些属性. 5.声明自定义属性的命名空间. xmlns:itheima="http://schemas.android.com/apk/res/com.itheima.mobilesafe 6.在res目录下的values目录下创建

【安卓自定义控件系列】安卓自定义控件之组合控件

在安卓开发中,谷歌已经为我们提供了许多原生控件,基本上能够满足我们日常的开发需求,但是某些项目中原生控件可能达不到产品所要求的各式各样的酷炫效果或功能效果,这个时候我们只能自己自定义控件来满足项目需求,我们知道自定义控件包括三种方式: 1继承控件,即继承谷歌提供的原生控件,在此基础上提供一些原生控件不具备的功能,如github上各种酷炫效果的开源组件基本上都是采用的这种方式. 2组合控件:即组合多个原生控件来达到某些单个原生控件原本不具备的功能,这个在日常开发中应该是使用的比较多的,如基本上每个

Android自定义组合控件--底部多按钮切换

效果图: 现在市场上大多数软件都是类似于上面的结构,底部有几个按钮用于切换到不同的界面.基于OOP思想,我想把下面的一整块布局封装成一个类,也就是我们的自定义组合控件-底部多按钮切换布局,我把它叫做BottomLayout 看上面的布局,几个按钮横向排列,我们先看一下布局 最外面LinearLayout 方向 horizontal,然后5个weight相同的RelativeLayout,每个RelativeLayout里面有一个Button(用了显示选中状态)个ImageView(用来显示红点)

自定义组合控件,适配器原理-Day31

自定义组合控件,适配器原理-Day31 mobile2.1 主页定义 手机上锁功能 1.弹出设置密码框. 手机下载进度 自定定义控件 控件的属性其实就是控件类一个属性设置属性调用类的set方法方法, 自定义组合控件的思路 生命一个View对象继承自相对布局,线性布局或者其他的ViewGroup 在View对象重写构造方法,然后初始化布局,通过View.inflate()方法把我们自己定义的布局挂到界面当中. 自定义属性在res/values目录下创建attrs.xml里面定义一些属性, <res