复合控件是将一组相互关联的已有控件整合,从而可以当作单个控件使用。
创建复合控件的步骤:
- 创建一个扩展布局的类
- 实现构造方法,并在构造方法中,首先实现超类的构造方法super(...)
- 复合组件可以像其他视图一样在XML中声明创建,组件名为该类的完整名称(包名+类名),并在构造方法中实现超类构造方法super(Context contex, AttributeSet attrs)。
- 通过attrs获取自定义属性值,对子控件进行初始化设置。
- 根据需要扩展该复合组件方法
示例代码:
图标控件(包含图标和标题)
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开发中,自定义复合控件是一项基本且重要的技能,它允许开发者根据项目需求创造出具有独特功能和外观的UI组件。本示例旨在帮助初学者理解并掌握自定义复合控件的创建过程,以便更好地扩展和优化应用程序的...
组合控件,顾名思义,是指将多个基本控件通过特定的方式组合在一起,形成一个具有新功能或新外观的复合控件。本篇文章将深入探讨如何在Android中实现自定义组合控件,以及如何处理点击事件。 首先,我们从创建一个...
以下将详细介绍Android自定义组合控件的相关知识点。 一、自定义控件的分类 1. 组件扩展:对现有控件进行功能增强或样式修改,例如自定义Button增加动画效果。 2. 组合控件:结合多个基础控件,形成新的复合控件,...
在Android开发中,自定义复合控件(Compound View)是一项重要的技能,它允许开发者将多个基本组件组合成一个更复杂的视图,以满足特定的UI需求。标题“MyCompoundView自定义复合控件”提示我们将深入探讨如何创建并...
7. **子视图管理**:如果需要,还可以在自定义控件内部添加其他视图,如ImageView或ProgressBar,形成复合控件。 8. **性能优化**:在设计自定义控件时,要考虑到性能因素,避免在`onDraw()`方法中执行耗时操作,...
这样的示例可能会涉及到如何组合TextView和ImageView,创建一个类似按钮的效果,或者结合多个开关控件形成一个复合选择器。 通过学习和实践自定义组合控件,开发者能够深入理解Android视图系统的底层机制,从而更好...
例如,我们可以基于LinearLayout、RelativeLayout 或 FrameLayout 来创建一个复合控件,这样可以结合多个简单的视图元素,形成具有特定功能的复杂组件。 创建TitleBar时,我们首先需要考虑它应有的基本组件,如标题...
总结来说,自定义标题栏是Android开发中的一个实用技巧,它涉及到复合控件的设计、自定义属性的使用和接口回调的实现。通过熟练掌握这些知识点,开发者可以创建出更加个性化和功能丰富的应用界面,提升用户体验。
创建自定义复合控件的步骤主要包括以下几个方面: 1. **定义视图类**:创建一个新的Java类,继承自Android的View或者ViewGroup类。如果需要管理多个子视图,通常会选择继承ViewGroup,因为它允许你添加、移除和管理...
3. **组合控件**:将多个标准控件组合在一起,形成一个新的复合控件,这是最常见也最灵活的方式,可以在不修改系统控件源码的情况下实现复杂效果。 本文将主要介绍组合控件的使用。例如,我们想要创建一个包含图片...
在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。自定义控件允许开发者根据需求构建功能更丰富、界面更美观的组件。在这个主题中,我们将深入探讨如何通过一个常见的标题控件来实践自定义组合...
自定义组合控件是这一领域的核心概念,它将多个基础组件组合在一起,形成一个具有特定功能的复合控件。本文将深入探讨如何创建自定义组合控件,并通过实际案例分析其优势。 在传统的开发模式下,当面临大量重复的...
本主题将深入探讨如何在Android中实现自定义组合控件,即利用多个基础控件构建一个具有特殊功能或样式的复合视图。 首先,我们要理解自定义View的基本结构。一个自定义View通常继承自Android的View或者ViewGroup类...
这份"Android自定义控件知识文档"涵盖了从基础知识到高级技巧的全方位教程,旨在帮助开发者深入理解和熟练掌握自定义控件的创建与应用。 首先,我们要了解自定义控件的基本概念。在Android中,控件是用户界面的基础...
本文将通过一个实例——“自定义组合控件一例”来探讨如何创建一个带斜分的表头,以此加深对Android自定义控件的理解。我们将涵盖以下几个关键知识点: 1. **自定义控件基础**:在Android中,自定义控件通常是通过...
在"自定义组合控件"这个Demo中,开发者可能会展示如何结合多个基本控件,如ImageView、TextView等,创建一个新的具有特定功能的复合控件。例如,一个显示头像、用户名和时间戳的用户信息卡片。通过这个示例,你可以...
在Android开发中,创建自定义复合控件是提高代码复用性和界面设计灵活性的重要手段。本文将探讨如何创建一个图片和文字相结合的控件,并实现选中效果与点击事件的处理,以提升用户体验。 首先,我们需要理解“复合...
2. 用户控件:用户控件是由多个基础控件组合而成的复合控件。它们在设计时如同拼图一样将多个小控件组合在一起,形成一个新的控件。用户控件并不直接继承自基础控件,而是使用容器控件(如Panel)来组合其他控件。 ...