- 浏览: 549440 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
q649916440:
使用这个的目的是什么呢?感觉没啥优势啊,用起来还绕个大圈
使用googleapi-client-java操作gtasks(一) -
文艺吧网:
还有一个GZIP的问题,我怎么转都乱码最后是因为要解压一下ht ...
关于使用InputStreamReader读取GBK编码文件乱码的问题 -
xiaodousa:
9楼正解!
Android在Listview中使用EditText -
fxiaozj:
zyp09 写道很想知道在Mainactivity界面怎么获得 ...
Android PreferenceActivity 学习笔记 -
zylc369:
楼主很用心,一定要顶
Android通过共享用户ID来实现多Activity进程共享
目标:实现textview和ImageButton组合,可以通过Xml设置自定义控件的属性。
1.控件布局:以Linearlayout为根布局,一个TextView,一个ImageButton。
2.自定义控件代码,从LinearLayout继承:
在构造函数中将Xml中定义的布局解析出来。
PS:有时执行此句代码时eclipse会输出找不到资源,而无法预览自定义控件。经试验确定是新增的布局没有生成资源,但是clean project重新生成也不行,最后重启eclipse解决。
3.在主界面布局xml中使用自定义控件:
即使用完整的自定义控件类路径:com.demo.widget2.ImageBtnWithText定义一个元素。
运行可以看到控件已经能够被加载到界面上。
4.给按钮设置图片和文本
如果图片是固定不变的,那么直接在控件布局中设置ImageButton的src属性即可。
4.1通过Java代码设置,在控件代码中提供函数接口:
然后再在主界面的onCreate()通过函数调用设置即可。
4.2通过Xml设置属性
4.2.1首先定义Xml可以设置的属性集合,在values下创建attrs.xml,文件名可随意,一般都叫attrs.xml
属性集合名字:ImageBtnWithText,自己可根据实际来定义;
集合中包含的属性列表,每行一个属性。
4.2.2修改自定义控件实现代码,以获取xml中定义的属性
首先通过context.obtainStyledAttributes获得所有属性数组;
然后通过TypedArray类的getXXXX()系列接口获得相应的值。
4.2.3在主界面布局中设置自定义控件的属
android:text="ABC" android:src="@drawable/icon
4.3自定义名称属性:
在4.2中使用的属性名是android系统命名空间的,都以android开头,比如android:text等。
实际开发中会自定义一些属性名,这些属性名仍然定义在4.2.1提到的attrs.xml中:
4.3.1定义属性名
和直接使用系统的attr不同的是要增加一个format属性,说明此属性是什么格式的。format可选项可参见注1
4.3.2使用自定义属性
直接在主布局文件中使用此属性appendText="abc"是不会设置生效的,而是要在主布局xml中定义一个xml命名空间:
xmlns:myspace="http://schemas.android.com/apk/res/com.demo.customwidget"
命名空间的名字可以自己随便定义,此处为myspace,即xmlns:myspace;
后面的地址则有限制,其开始必须为:"http://schemas.android.com/apk/res/",后面则是包名com.demo.customwidget,
此处的包名与AndroidManifest.xml中<manifest>节点的属性package="com.demo.customwidget"一致,不是自定义控件Java代码所在的包,当然简单的程序自定义控件Java代码也一般在此包内。
注1:
注1:format可选项
"reference" //引用
"color" //颜色
"boolean" //布尔值
"dimension" //尺寸值
"float" //浮点值
"integer" //整型值
"string" //字符串
"fraction" //百分数,比如200%
枚举值,格式如下:
<attr name="orientation">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
xml中使用时:
android:orientation = "vertical"
标志位,位或运算,格式如下:
<attr name="windowSoftInputMode">
<flag name = "stateUnspecified" value = "0" />
<flag name = "stateUnchanged" value = "1" />
<flag name = "stateHidden" value = "2" />
<flag name = "stateAlwaysHidden" value = "3" />
<flag name = "stateVisible" value = "4" />
<flag name = "stateAlwaysVisible" value = "5" />
<flag name = "adjustUnspecified" value = "0x00" />
<flag name = "adjustResize" value = "0x10" />
<flag name = "adjustPan" value = "0x20" />
<flag name = "adjustNothing" value = "0x30" />
</attr>
xml中使用时:
android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">
另外属性定义时可以指定多种类型值,比如:
<attr name = "background" format = "reference|color" />
xml中使用时:
android:background = "@drawable/图片ID|#00FF00"
1.控件布局:以Linearlayout为根布局,一个TextView,一个ImageButton。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical"> <TextView android:layout_height="wrap_content" android:id="@+id/text1" android:layout_width="wrap_content"></TextView> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn1"></ImageButton> </LinearLayout>
2.自定义控件代码,从LinearLayout继承:
public class ImageBtnWithText extends LinearLayout { public ImageBtnWithText(Context context) { this(context, null); } public ImageBtnWithText(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.imagebtn_with_text, this, true); } }
在构造函数中将Xml中定义的布局解析出来。
PS:有时执行此句代码时eclipse会输出找不到资源,而无法预览自定义控件。经试验确定是新增的布局没有生成资源,但是clean project重新生成也不行,最后重启eclipse解决。
3.在主界面布局xml中使用自定义控件:
<com.demo.widget2.ImageBtnWithText android:id="@+id/widget" android:layout_width="fill_parent" android:layout_height="fill_parent" />
即使用完整的自定义控件类路径:com.demo.widget2.ImageBtnWithText定义一个元素。
运行可以看到控件已经能够被加载到界面上。
4.给按钮设置图片和文本
如果图片是固定不变的,那么直接在控件布局中设置ImageButton的src属性即可。
4.1通过Java代码设置,在控件代码中提供函数接口:
public void setButtonImageResource(int resId) { mBtn.setImageResource(resId); } public void setTextViewText(String text) { mTv.setText(text); }
然后再在主界面的onCreate()通过函数调用设置即可。
4.2通过Xml设置属性
4.2.1首先定义Xml可以设置的属性集合,在values下创建attrs.xml,文件名可随意,一般都叫attrs.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="ImageBtnWithText"> <attr name="android:text"/> <attr name="android:src"/> </declare-styleable> </resources
属性集合名字:ImageBtnWithText,自己可根据实际来定义;
集合中包含的属性列表,每行一个属性。
4.2.2修改自定义控件实现代码,以获取xml中定义的属性
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ImageBtnWithText); CharSequence text = a.getText(R.styleable.ImageBtnWithText_android_text); if(text != null) mTv.setText(text); Drawable drawable = a.getDrawable(R.styleable.ImageBtnWithText_android_src); if(drawable != null) mBtn.setImageDrawable(drawable); a.recycle()
首先通过context.obtainStyledAttributes获得所有属性数组;
然后通过TypedArray类的getXXXX()系列接口获得相应的值。
4.2.3在主界面布局中设置自定义控件的属
android:text="ABC" android:src="@drawable/icon
4.3自定义名称属性:
在4.2中使用的属性名是android系统命名空间的,都以android开头,比如android:text等。
实际开发中会自定义一些属性名,这些属性名仍然定义在4.2.1提到的attrs.xml中:
4.3.1定义属性名
<attr name="appendText" format="string"/>
和直接使用系统的attr不同的是要增加一个format属性,说明此属性是什么格式的。format可选项可参见注1
4.3.2使用自定义属性
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myspace="http://schemas.android.com/apk/res/com.demo.customwidget" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.demo.widget2.ImageBtnWithText android:text="ABC" android:src="@drawable/icon" android:id="@+id/widget" android:layout_width="fill_parent" android:layout_gravity="center" android:layout_height="fill_parent" myspace:appendText="123456"> </com.demo.widget2.ImageBtnWithText> </LinearLayout>
直接在主布局文件中使用此属性appendText="abc"是不会设置生效的,而是要在主布局xml中定义一个xml命名空间:
xmlns:myspace="http://schemas.android.com/apk/res/com.demo.customwidget"
命名空间的名字可以自己随便定义,此处为myspace,即xmlns:myspace;
后面的地址则有限制,其开始必须为:"http://schemas.android.com/apk/res/",后面则是包名com.demo.customwidget,
此处的包名与AndroidManifest.xml中<manifest>节点的属性package="com.demo.customwidget"一致,不是自定义控件Java代码所在的包,当然简单的程序自定义控件Java代码也一般在此包内。
注1:
注1:format可选项
"reference" //引用
"color" //颜色
"boolean" //布尔值
"dimension" //尺寸值
"float" //浮点值
"integer" //整型值
"string" //字符串
"fraction" //百分数,比如200%
枚举值,格式如下:
<attr name="orientation">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
xml中使用时:
android:orientation = "vertical"
标志位,位或运算,格式如下:
<attr name="windowSoftInputMode">
<flag name = "stateUnspecified" value = "0" />
<flag name = "stateUnchanged" value = "1" />
<flag name = "stateHidden" value = "2" />
<flag name = "stateAlwaysHidden" value = "3" />
<flag name = "stateVisible" value = "4" />
<flag name = "stateAlwaysVisible" value = "5" />
<flag name = "adjustUnspecified" value = "0x00" />
<flag name = "adjustResize" value = "0x10" />
<flag name = "adjustPan" value = "0x20" />
<flag name = "adjustNothing" value = "0x30" />
</attr>
xml中使用时:
android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">
另外属性定义时可以指定多种类型值,比如:
<attr name = "background" format = "reference|color" />
xml中使用时:
android:background = "@drawable/图片ID|#00FF00"
- CustomWidget.zip (12.6 KB)
- 下载次数: 421
发表评论
-
使用googleapi-client-java操作gtasks(二)
2012-03-29 15:34 4636对于很多第三方的机器没有安装Google账户管理,要访问GTa ... -
Android Activity 生命周期再验证
2011-11-22 16:20 8032Android Activity 生命活动 ... -
Nexus one开关键坏掉后的解决方法
2011-10-14 15:17 4504Nexus one手机无法开机了,网上搜索了一下发现很多人遇到 ... -
改包名导致JNI调用失败的问题
2011-08-31 13:41 5201修改以前的代码,移动了一个文件,修改了其包名,在这个文件代码中 ... -
使用googleapi-client-java操作gtasks(一)
2011-08-10 18:07 14931Google Tasks的API终于开放 ... -
一个好用的Google api调试网址
2011-08-09 11:00 1853https://code.google.com/apis/ex ... -
Apk文件Hack试验
2011-07-11 17:54 2894试验1:反编译dex文 ... -
一个由onKeyUp引起的问题
2011-04-19 16:05 1970刚写一个小程序,在用户按下Back按键返回时,需要保存一些数据 ... -
也谈Android下一个apk安装多个程序入口图标
2011-03-18 11:28 9234Android中有的Ap功能比较复杂,为了方便用户使用,可以提 ... -
Android AppWidget实例验证
2011-02-25 15:26 134091.创建AppWidget布局,包含两个TextView用来显 ... -
Android Activity LaunchMode 验证
2011-02-23 15:04 8359在Android中,每个Activity有4种LaunchMo ... -
文件夹权限引起的MediaPlayer播放不正常
2011-01-20 20:41 2364写了一个Ap,在程序运行时会解压一些声音文件到/data/da ... -
关于使用InputStreamReader读取GBK编码文件乱码的问题
2011-01-19 17:13 25814BufferedReader reader = new Buf ... -
Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证
2010-12-23 21:10 22809最近在使用Listview又遇到了以前碰到的问题,当Listv ... -
通过Java annotation以及反射机制实现不同类型通用的数据库访问接口
2010-12-22 12:14 5558在日常开发中会遇到这 ... -
Android PreferenceActivity 学习笔记
2010-12-11 12:45 20073在Ap中有时需要设置一些配置参数,这些参数通过配置文件保存。 ... -
Android平台sqlite快速入门
2010-12-07 12:00 2385以下概念都是在Android平台的sqlite3限制下的理解: ... -
Android下使用googleapi-client-java操作google calendar(三)
2010-11-29 18:57 48044.获取日历列表并显示: 原理:向https://www. ... -
Android下使用googleapi-client-java操作google calendar(二)
2010-11-28 22:50 23863.与服务器进行数据交互: 交互是通过HTTP请求及响应来进 ... -
Android下使用googleapi-client-java操作google calendar(一)
2010-11-19 14:41 5010刷机又把数据刷没了,网络时代,数据还是和服务器同步好了。 从 ...
相关推荐
手机安全卫士--Android自定义组合控件实现设置功能,界面采用Android自定义组合控件的方式实现,更多详细信息请访问 http://blog.csdn.net/qq_20889581?viewmode=contents 文明的小流氓的博客
这篇博客“android自定义组合控件”可能详细介绍了如何在Android应用中构建这样的控件。通过自定义组件,开发者可以实现标准库中未包含的交互方式,提升用户体验,并使应用更具个性化。 自定义组件通常涉及到以下几...
以下将详细介绍Android自定义组合控件的相关知识点。 一、自定义控件的分类 1. 组件扩展:对现有控件进行功能增强或样式修改,例如自定义Button增加动画效果。 2. 组合控件:结合多个基础控件,形成新的复合控件,...
总的来说,Android自定义组合控件是提高应用个性化和效率的重要手段。通过理解并掌握自定义控件的原理和技巧,开发者能够创造出更加独特和高效的用户界面。在这个过程中,不断实践、学习和分享,将使你在Android开发...
总结起来,Android自定义组合控件的实现涉及到了对Android UI框架的深入理解和实践,包括继承自定义View或ViewGroup、测量与布局、绘制、事件处理等关键步骤。通过这样的方式,开发者可以构建出功能强大、交互丰富的...
本文将深入探讨如何在Android中实现自定义组合控件,以提高应用的用户体验和界面设计的灵活性。 首先,理解自定义View的基本概念至关重要。自定义View是通过继承已有的View或 ViewGroup 类,然后重写其方法来实现的...
在Android开发中,自定义组合控件是一种常见的需求,它能够帮助我们实现独特且符合应用设计风格的功能。本文将深入探讨如何在Android中创建一个自定义的顶部导航栏,这个控件可以作为应用的主要交互入口,展示多个可...
本文将深入探讨如何创建一个名为`UIScrollLayout`的自定义组合控件,它支持界面的流畅滑动以及左右菜单的滑动功能。这个控件可以通过设置`view_type`参数来切换不同的显示模式,从而为用户提供两种不同的视图体验。 ...
总结来说,创建Android自定义组合控件TitleBar涉及以下几个关键步骤: 1. 选择合适的基础类,如LinearLayout。 2. 重写`onMeasure()`, `onLayout()`, 和 `onDraw()` 方法,实现布局和绘制。 3. 添加子视图并设置相应...
自定义组合控件是Android开发中的一个重要技巧,它可以帮助开发者更高效地管理布局,减少重复代码,提高代码的可读性和可维护性。通过封装常见的UI元素,自定义组合控件可以作为基础组件在整个项目中复用,降低了...
总结来说,实现Android自定义组合控件涉及以下几个步骤: 1. 在`attrs.xml`中定义自定义属性。 2. 创建布局文件,使用自定义属性。 3. 编写Java代码,处理自定义控件的行为,解析并应用属性值。 通过以上步骤,你将...
在IT行业中,自定义组合控件的实现是Android开发中一个重要的知识点,它涉及到UI设计、自定义View以及布局管理等多个领域。自定义控件可以让开发者根据特定需求创建出具有独特功能和外观的用户界面元素,提升应用的...
总结起来,Android自定义组合控件的开发是一个涉及视图继承、测量、布局、绘制、属性设置和事件处理的综合过程。通过实践这个Demo,开发者能够提升对Android UI系统理解,从而更好地满足项目中的个性化需求。
本文将深入探讨如何在Android中创建自定义组合控件以及重写现有控件,并通过具体例子源码来帮助初学者理解这一过程。 首先,让我们了解什么是自定义View。在Android中,我们通常使用的诸如Button、TextView等都是...
我们来讲一下自定义组合控件,相信大家也接触过自定义组合控件吧,话不多说,直接干(哈~哈~): 大家看到这个觉得这不是很简单的吗,这不就是写个布局文件就搞定嘛,没错,确实直接上布局就行,不过,我只是用这个...