- 浏览: 572777 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (205)
- android (78)
- spring MVC (10)
- spring (3)
- javascript (9)
- 喧泄 (0)
- libgdx (1)
- android View展现特效 (6)
- android.graphics.* (2)
- android ListView (4)
- android 电话及短信 (3)
- iPhone (4)
- iPhone自定义控件 (2)
- android 网文摘记 (4)
- java (30)
- android imageView (2)
- android textView EditText (1)
- 用户体验元素 (1)
- 营销推广 (3)
- android 多媒体 (4)
- android原创学习笔记 (7)
- 业余收入 (1)
- AndEngine (3)
- baidu map (3)
- android课程 (3)
- elasticsearch (1)
- freeSwitch (5)
最新评论
-
牵着蚂蚁散步:
哥,在吗,你现在操作freeswitch是用event soc ...
java esl连接freeswitch发送拨打电话<第二篇> -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
过滤特殊字符及表情符 -
YLCCMM:
按照楼主这样是可以页面是可以完成效果,但是后台依旧会报错打印出 ...
spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小 -
喧嚣求静:
sunshaoqun 写道二次元 写道希望能分享下.so文件编 ...
手机录音-amr -
sunshaoqun:
二次元 写道希望能分享下.so文件编译源码!求.so源码。。。 ...
手机录音-amr
关于自定义控件或属性
请转此学习
看代码之前先看看效果图
时间选择
使用方法:配置为时间(dateTime:dateFormatStr="HH:mm:ss" dateTime:dateFormat="time")
看代码之前先看看效果图
日期选择
使用方法:配置为日期(dateTime:dateFormatStr="yyyy-MM-dd" dateTime:dateFormat="date")
res/values/attrs.xml
实现类
实现类中用到的布局文件
date_pick_txt.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="DatePickText">
<attr name="dateFormatStr" format="string"/>
<attr name="dateFormat" >
<!-- yyyy-MM-dd -->
<enum name="date" value="0" />
<!-- HH:mm:ss -->
<enum name="time" value="1" />
</attr>
</declare-styleable>
</resources>
找不到R.styleable.DatePickText_layout_height
<com.app.view.DatePickText android:layout_marginLeft="7dp" android:layout_width="230dp" android:layout_height="35dp"
android:id="@+id/v_birthday" dateTime:dateFormatStr="yyyy-MM-dd" dateTime:dateFormat="date"/>
layout_height是android原有属性,在使用自定义组件时,填上就可。
找不到R.styleable.DatePickText_layout_height
是不是,引用到图片资源没有,这个只要同名,你随便给个图片就可
请转此学习
看代码之前先看看效果图
时间选择
使用方法:配置为时间(dateTime:dateFormatStr="HH:mm:ss" dateTime:dateFormat="time")
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dateTime="http://schemas.android.com/apk/res/com.app"/> <com.app.view.DatePickText android:layout_marginLeft="7dp" android:layout_width="230dp" android:layout_height="35dp" android:id="@+id/v_birthday" dateTime:dateFormatStr="HH:mm:ss" dateTime:dateFormat="time"/>
看代码之前先看看效果图
日期选择
使用方法:配置为日期(dateTime:dateFormatStr="yyyy-MM-dd" dateTime:dateFormat="date")
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dateTime="http://schemas.android.com/apk/res/com.app"/> <com.app.view.DatePickText android:layout_marginLeft="7dp" android:layout_width="230dp" android:layout_height="35dp" android:id="@+id/v_birthday" dateTime:dateFormatStr="yyyy-MM-dd" dateTime:dateFormat="date"/>
res/values/attrs.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="DatePickText"> <attr name="dateFormatStr" format="string"/> <attr name="dateFormat" > <!-- yyyy-MM-dd --> <enum name="date" value="0" /> <!-- HH:mm:ss --> <enum name="time" value="1" /> </attr> </declare-styleable> </resources>
实现类
package com.app.view; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TimePicker; import com.app.R; public class DatePickText extends LinearLayout { private Integer dateFormat; private String layout_height,layout_width; private String dateFormatStr; private EditText edit; private ImageButton btn_date; private LinearLayout layout; public static final int TOP = 0; public static final int BOTTOM = 1; public static final int LEFT = 2; public static final int RIGHT = 3; public static final int DATE = 0; public static final int TIME = 1; private SimpleDateFormat df ; private final Calendar cal = Calendar.getInstance(Locale.SIMPLIFIED_CHINESE); public DatePickText(Context context) { super(context); } public DatePickText(Context context, AttributeSet attrs) { super(context, attrs); TypedArray typeA =context.obtainStyledAttributes(attrs, R.styleable.DatePickText); layout_height=typeA.getString(R.styleable.DatePickText_layout_height); layout_width=typeA.getString(R.styleable.DatePickText_layout_width); dateFormatStr=typeA.getString(R.styleable.DatePickText_dateFormatStr); dateFormat=typeA.getInteger(R.styleable.DatePickText_dateFormat,DATE); //typeA.g LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); layoutInflater.inflate(R.layout.date_pick_txt,this); layout=(LinearLayout)findViewById(R.id.date_linear); edit=(EditText)findViewById(R.id.date_txt); btn_date=(ImageButton)findViewById(R.id.date_btn); processUi(context); } private void processUi(final Context context){ //ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(params); //layout.setLayoutParams(params); btn_date.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { System.out.println("-------------click------------"); buildDateOrTimeDialog(context); } }); } private void buildDateOrTimeDialog(Context context){ df = new SimpleDateFormat(dateFormatStr); switch(dateFormat) { case DATE: date: new DatePickerDialog( context,listener , cal .get(Calendar. YEAR ), cal .get(Calendar. MONTH ), cal .get(Calendar. DAY_OF_MONTH ) ).show(); break; case TIME: System.out.println("----------time---------------"); new TimePickerDialog(context,timeListen,cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE),true).show(); break; default: new DatePickerDialog( context,listener , cal .get(Calendar. YEAR ), cal .get(Calendar. MONTH ), cal .get(Calendar. DAY_OF_MONTH ) ).show(); } } private DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener(){ // @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { cal .set(Calendar. YEAR , arg1); cal .set(Calendar. MONTH , arg2); cal .set(Calendar. DAY_OF_MONTH , arg3); updateDate(); } }; // 当 DatePickerDialog 关闭,更新日期显示 private void updateDate(){ edit.setText( df .format( cal .getTime())); } TimePickerDialog.OnTimeSetListener timeListen = new TimePickerDialog.OnTimeSetListener() { //同DatePickerDialog控件 @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { cal.set(Calendar.HOUR_OF_DAY, hourOfDay); cal.set(Calendar.MINUTE, minute); cal.set(Calendar.SECOND, cal.get(Calendar.SECOND)); updateTimes(); } }; //更新页面TextView的方法 private void updateTimes() { edit.setText(df.format(cal.getTime())); } }
实现类中用到的布局文件
date_pick_txt.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:id="@+id/date_linear" android:layout_width="230dp" android:layout_height="35dp"> <RelativeLayout android:id="@+id/date_relative" android:layout_height="fill_parent" android:layout_width="fill_parent"> <EditText android:id="@+id/date_txt" android:editable="false" android:layout_height="fill_parent" android:layout_width="fill_parent" android:includeFontPadding="false" android:hint="yyyy-mm-dd"/> <ImageButton android:src="@drawable/date_pic" android:layout_width="28dp" android:layout_marginLeft="-33dp" android:layout_alignBottom="@+id/date_txt" android:layout_centerInParent="true" android:layout_centerHorizontal="true" android:layout_height="26dp" android:layout_toRightOf="@+id/date_txt" android:id="@+id/date_btn"/>/ </RelativeLayout> </LinearLayout>
评论
6 楼
喧嚣求静
2013-05-05
javaxhw 写道
代码里面的 :R.declare-styleable.DatePickText
eclipse提示找不到啊?咋回事
eclipse提示找不到啊?咋回事
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="DatePickText">
<attr name="dateFormatStr" format="string"/>
<attr name="dateFormat" >
<!-- yyyy-MM-dd -->
<enum name="date" value="0" />
<!-- HH:mm:ss -->
<enum name="time" value="1" />
</attr>
</declare-styleable>
</resources>
5 楼
喧嚣求静
2013-05-05
javaxhw 写道
javaxhw 写道
代码里面的 :R.declare-styleable.DatePickText
eclipse提示找不到啊?咋回事
eclipse提示找不到啊?咋回事
找不到R.styleable.DatePickText_layout_height
<com.app.view.DatePickText android:layout_marginLeft="7dp" android:layout_width="230dp" android:layout_height="35dp"
android:id="@+id/v_birthday" dateTime:dateFormatStr="yyyy-MM-dd" dateTime:dateFormat="date"/>
layout_height是android原有属性,在使用自定义组件时,填上就可。
4 楼
javaxhw
2012-11-10
javaxhw 写道
代码里面的 :R.declare-styleable.DatePickText
eclipse提示找不到啊?咋回事
eclipse提示找不到啊?咋回事
找不到R.styleable.DatePickText_layout_height
3 楼
javaxhw
2012-11-10
代码里面的 :R.declare-styleable.DatePickText
eclipse提示找不到啊?咋回事
eclipse提示找不到啊?咋回事
2 楼
喧嚣求静
2012-08-24
endual 写道
这个正好是我要的效果呵呵,就是把代码复制下来错误了。
哎。。。,这个自定义的xml第一次用,所以不太懂。
多谢多谢
哎。。。,这个自定义的xml第一次用,所以不太懂。
多谢多谢
是不是,引用到图片资源没有,这个只要同名,你随便给个图片就可
1 楼
endual
2012-06-19
这个正好是我要的效果呵呵,就是把代码复制下来错误了。
哎。。。,这个自定义的xml第一次用,所以不太懂。
多谢多谢
哎。。。,这个自定义的xml第一次用,所以不太懂。
多谢多谢
发表评论
-
Android动态改变shape填充颜色
2017-04-10 16:19 1734工作中需要依据不同的银行卡显示不同背景,由于银行很多,不可能 ... -
android studio源码关联
2016-12-19 11:36 792在android stuido开发工具中,源码的关联是依据当 ... -
仿支付宝广告-顶部往下掉的popwindow,消失在左上角
2016-09-13 16:43 2119最近玩支付宝,有时候打开时,会从顶部掉下一个营销的广告窗口, ... -
圆形进度条-倒计时
2016-09-08 15:28 932参考了:https://github.com/yanz ... -
Android 6.0 运行时权限处理完全解析-兼容
2016-07-21 10:12 5411.项目增加V7包,*Activity extends Ap ... -
安卓自定义进度条样式-layer-list
2016-07-06 09:32 1501//在开发中常用到的知识点,太多了,记不住,只能放网上做笔记 ... -
转载-Android系统支持的CPU架构
2016-06-30 10:12 4739原文链接 早期的Android系统几乎只支持ARMv5的C ... -
安卓通用baseAdapter数据适配器
2016-06-29 16:28 761用法 topFourFuncAdapter=new Ab ... -
android 编译dex,方法数限制65536
2016-06-21 15:40 1224产生原因,大致是android在编译dex后,进行优化时,使 ... -
android 5.1模拟器安装apk报INSTALL_FAILED_NO_MATCHING_ABIS
2016-06-12 16:08 3080android 5.1模拟器安装apk报INSTALL_FA ... -
android 自定义软键盘-转载
2016-06-08 15:45 833场景: 1.支付控件时,需要随机布局软键盘 2. 电视机 ... -
html5-android-转载
2016-05-26 20:32 734(上)包括Android设备多分辨率的问题,Android中 ... -
android代码编写ColorStateList
2015-12-26 16:48 1018private void initViews() { ... -
Android资源图片读取机制-转载
2015-11-09 20:42 934在新建一个Android项目时,在res目录下会自动生成几个 ... -
移动端h5开源框架
2015-09-23 10:44 7164Amaze UI 含近 20 个 CSS 组件、20 ... -
Android基于volley的快速开发基类
2015-08-29 10:02 1615Volley框架至2013面试以来,已经普及了很多andro ... -
android QQ互联第三方登录开发
2015-08-26 17:14 4170android QQ互联第三方登录开发 背景: 当前基 ... -
android array.xml中使用图片和颜色资源
2015-08-23 11:17 3148<?xml version="1.0& ... -
开源新闻客户端QuickNews学习
2015-08-20 14:11 2515开源新闻客户端QuickNews学习 先贴出源码地址 h ... -
转载-ViewPagerindicator 源码解析
2015-08-12 20:27 899ViewPagerindicator 源码解析
相关推荐
自定义控件可以是简单的样式修改,如改变按钮的颜色和形状,也可以是复杂的交互设计,如自定义滑动选择器或动画效果。实现自定义控件通常涉及以下步骤: 1. 继承已存在的View类(如Button、TextView等)或 ...
总结起来,Android自定义组合控件的实现涉及到了对Android UI框架的深入理解和实践,包括继承自定义View或ViewGroup、测量与布局、绘制、事件处理等关键步骤。通过这样的方式,开发者可以构建出功能强大、交互丰富的...
它们是预定义的UI组件,可以轻松地在布局XML文件中添加,并通过监听器获取用户选择的时间或日期。然而,这些控件的样式和交互方式可能无法满足所有设计要求。 2. **自定义控件的创建** 当需要自定义时间日期选择器...
在Android中,我们可以通过继承已有的View或 ViewGroup 类来创建自定义控件。对于编辑框,我们可以选择继承自 EditText 类,因为它提供了基本的文本输入功能,我们可以在此基础上进行定制。 1. **创建自定义编辑...
在Android开发中,自定义控件是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何根据【标题】"Android自定义...如果你下载并研究这个"自定义组合控件"的示例,相信你会对Android自定义控件有更深入的理解。
别忘了在`<merge>`或`<layout>`标签内引入自定义控件的命名空间,并在`<TestCustomWidget>`标签中指定自定义属性: ```xml <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=...
这份"Android自定义控件开发.rar"压缩包包含了一本名为《Android自定义控件开发入门与实战》的PDF教程,旨在帮助Android开发者深入理解和实践自定义控件的创建。 自定义控件在Android开发中的价值主要体现在以下几...
7. **主题样式**:为了让日期选择框与应用的整体风格保持一致,你需要考虑自定义控件的主题和颜色。可以使用主题属性或者自定义样式资源文件来控制UI的外观。 8. **兼容性**:确保自定义日期选择框在不同版本的...
1. **创建布局文件**:设计XML布局文件,定义两个Spinner(下拉选择框)用于分别选择开始年份和结束年份,以及两个MonthPicker(月选择器)用于选择开始和结束月份。MonthPicker可以通过自定义View或者修改...
总结而言,《自定义控件书籍》不仅全面覆盖了 Android 控件的基础知识,还深入探讨了自定义控件的开发技巧,并通过丰富的实例帮助读者掌握实际操作技能。无论是初学者还是有一定经验的开发者,都能从中获益良多。
Android 自定义日期段选择控件功能是 Android 开发中常见的需求之一,该控件允许用户选择开始时间和结束时间,并且可以自定义控件的样式和行为。下面我们将详细介绍 Android 自定义日期段选择控件功能的实现过程。 ...
在Android开发中,自定义控件是提升应用用户体验和界面个性化的重要手段。Toast作为一个轻量级的通知机制,常用于显示短暂的信息提示。本资源“安卓自定义控件相关-五种效果的Toast.rar”提供了五种不同的Toast实现...
这份"Android自定义控件知识文档"涵盖了从基础知识到高级技巧的全方位教程,旨在帮助开发者深入理解和熟练掌握自定义控件的创建与应用。 首先,我们要了解自定义控件的基本概念。在Android中,控件是用户界面的基础...
5. **属性支持**:为了在XML布局文件中方便地设置自定义控件的属性,可以通过 attrs.xml 文件定义自定义属性,并在 init() 方法中解析这些属性。 6. **优化性能**:为提高性能,可以考虑使用硬件加速,避免不必要的...
"android 自定义 日期时间控件"是一个项目,目标是模仿iPhone的日期时间选择器,并结合Android原生的日期和时间控件,提供更加美观且可定制化的交互体验。 在Android系统中,我们通常使用`DatePicker`和`TimePicker...
综上所述,创建一个如"RollWeekView"这样的自定义日期选择控件涉及到Android自定义视图、动画、触摸事件处理等多个技术点。通过巧妙地组合这些技术,我们可以构建出一个既实用又美观的UI组件,提升应用的整体体验。...
综上所述,创建一个Android自定义的日期时间选择器弹框涉及到DialogFragment的使用、布局设计、日期和时间选择器的交互处理以及可能的样式和功能优化。这个过程需要对Android开发有深入的理解,包括布局管理、事件...
本篇文章将深入探讨Android自定义控件的相关知识,包括自定义控件的分类、创建过程以及常见技巧。 一、自定义控件的分类 1. 继承已有控件:通过继承已有的Android内置控件(如TextView、ImageView等),并重写其...
在Android开发中,Spinner是一个非常常用的控件,它允许用户从一组预定义的选项中进行选择。默认情况下,Spinner的样式可能...记住,良好的UI设计能够提升用户对应用的满意度,因此花时间在自定义控件样式上是值得的。