`
dyingbleed
  • 浏览: 116511 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

【Android】创建自定义复合控件

 
阅读更多

 

复合控件是将一组相互关联的已有控件整合,从而可以当作单个控件使用。

 

创建复合控件的步骤:

 

  1. 创建一个扩展布局的类
  2. 实现构造方法,并在构造方法中,首先实现超类的构造方法super(...)
  3. 复合组件可以像其他视图一样在XML中声明创建,组件名为该类的完整名称(包名+类名),并在构造方法中实现超类构造方法super(Context contex, AttributeSet attrs)。
  4. 通过attrs获取自定义属性值,对子控件进行初始化设置。
  5. 根据需要扩展该复合组件方法
示例代码:
图标控件(包含图标和标题)
package lizhen.appstore.ext;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * 图标(图标+标题)
 * */
public class Icon extends LinearLayout {
	
	private ImageButton icon; //图标
	private TextView title; //标题
	
	public Icon(Context context, AttributeSet attrs) {
		super(context, attrs);
		
		setOrientation(VERTICAL); //设置方向竖直
		/*
		 * 图标初始化
		 * */
		icon = new ImageButton(context);
		int srcID = attrs.getAttributeResourceValue(null, "src", 0);
		if(srcID == 0) {
			//TODO
		} else {
			icon.setImageResource(srcID);
		}
		LayoutParams layoutParames = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
		icon.setPadding(5, 5, 5, 5);
		addView(icon, layoutParames);
		/*
		 * 标题初始化
		 * */
		title = new TextView(context);
		int textID = attrs.getAttributeResourceValue(null, "text", 0);
		if(textID == 0) {
			//TODO
		} else {
			title.setText(textID);
		}
		title.setGravity(Gravity.CENTER_HORIZONTAL);
		addView(title, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
		
	}
	
	/**
	 * 设置图标图像
	 * resid 资源ID
	 * */
	public void setImageResource(int resid) {
		icon.setImageResource(resid);
	}
	
	/**
	 * 设置图标图像
	 * drawable Drawable图像
	 * */
	public void setImageResource(Drawable drawable) {
		icon.setImageDrawable(drawable);
	}
	
	/**
	 * 设置图标标题
	 * resid 资源ID
	 * */
	public void setText(int resid) {
		title.setText(resid);
	}
	
	/**
	 * 设置图标标题
	 * text 文本
	 * */
	public void setText(CharSequence text) {
		title.setText(text);
	}
	
	/**
	 * 设置图标点击事件监听器
	 * listener 点击事件监听器
	 * */
	public void setOnIconClickListner(View.OnClickListener listener) {
		icon.setOnClickListener(listener);
	}

}
 
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<lizhen.appstore.ext.Icon
		android:id="@+id/icon"
		src="@drawable/icon"
		text="@strings/android"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"/>
</LinearLayout>
 
分享到:
评论

相关推荐

    Android自定义复合控件

    通过本示例,初学者可以快速掌握如何自定义Android复合控件的技巧

    Android自定义控件-常用标题栏

    现在我们公司得app都是差不多得title,所以抽时间自己撸了个常用得标题栏控件,直接在布局中使用。 不过本人还是推荐使用官方toolbar 等官方 新控件 ,效果太炫了。无奈设计要求这样,所以在这个公司干,为了开发...

    MyCompoundView自定义复合控件

    复合控件的创建及使用 详见博文http://blog.csdn.net/a87b01c14/article/details/50350405

    Android自定义复合控件实现通用标题栏

    主要为大家详细介绍了Android自定义复合控件实现通用标题栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android复合控件学习之自定义标题栏

    Android复合控件学习之自定义标题栏;学习自定义属性、接口回调等知识点

    《Android 群英传》读书笔记:自定义 View 之创建复合控件

    《Android 群英传》读书笔记:自定义 View 之创建复合控件

    Android 图片+文字复合控件,有选中效果

    自定义复合控件,支持选中效果及点击事件,非常简单的东西,分享一下,一起学习,欢迎指教

    Android如何创建自定义ActionBar

    由于是需要创建出具有重用功能的复合控件,所以通常需要继承 ViewGroup ,在给它添加指定功能的控制。给其指定一些可配置的属性,让其具有更强的扩展性。 本例可以简单的创建一个 TopBar 来继承 Rel

    android-toggle-button:适用于 Android 的自定义和可配置动画切换按钮

    Android 自定义切换按钮 获取涵盖此 repo 中代码的教程 通常在创建 Android 应用程序的过程中,开发人员需要创建一个设置页面。... 根据 Android 文档,复合控件允许您“将一个由一组现有控件组成的可

    《Android群英传》完整扫描版

    图书简介: 本书从由总到分,让读者从整体上把握Android体系结构,融入“群英传”这一故事情节,针对...3.6.2 创建复合控件 43 3.6.3 重写View来实现全新的控件 51 3.7 自定义ViewGroup 54 .........................

    Android图表控件

    相当漂亮的图表控件。包含动画自定义,复合图表,有很强的扩展性。

    Android开发案例驱动教程 配套代码

    6.2.3 复合类型 105 6.2.4 自定义显示位置Toast 106 6.3 对话框 107 6.3.1 文本信息对话框 107 6.3.2 简单列表项对话框 109 6.3.3 单选项列表项对话框 111 6.3.4 复选框列表项对话框 113 6.3.5 复杂布局列表...

    android群雄传

    3.6.2 创建复合控件 43 3.6.3 重写View来实现全新的控件 51 3.7 自定义View Group 54 3.8 事件拦截机制分析 59 第4章 List View使用技巧 65 4.1 List View常用优化技巧 66 4.1.1 使用View Holder模式提高效率 ...

    toggle-buton

    Android自定义切换按钮获取有关代码的教程。 通常,在创建Android应用程序期间,开发人员将需要创建一个设置页面。 这允许应用程序的用户更改将保留到下一个会话的应用程序设置,例如“启用我的位置”或“显示地图...

    Android提高之自定义Menu(TabMenu)实现方法

    把menu做成Tab-Menu(支持分页的Menu),可以容纳比Android传统的menu更丰富的内容(Android的menu超过6项则缩略在[更多]里),本文参考网上的例子的基础上对例子进行简化以及封装,使其作为一个复合控件融入自己的...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    学完了这阶段课程,学员将学会开发主流网站的前端效果,比如:焦点图、滚动展示图、网页防复制、网页自定义菜单、WebOS、美女时钟、无刷新评论、评分控件、表格特效、图片悬浮详细信息、微博界面、QQ消息框效果、Div...

Global site tag (gtag.js) - Google Analytics