TimePicker+DatePicker
2016-06-30 17:33
162 查看
时间选择器与日期选择器
如果主题为android自带主题(lv13以下)会变为旧版本的样式解决办法(变为新版):主题改为holo的,相应的改一下minsdkversion即可,在配置文件中。
如果想让时间和日期的同一列显示,可能撑不下,解决办法如下:
先来个自己发现的简单的:压缩一下,即scalex和scaley,如果不想显示年或者日;可以利用marginleft解决。
改变layout解决:这俩控件都是numberpicker组成的,所以可以利用这点改变numberpicker的layoutparamers,代码如下:
// Change DatePicker layout LinearLayout dpContainer = (LinearLayout)datePicker.getChildAt(0) ; // LinearLayout LinearLayout dpSpinner = (LinearLayout)dpContainer.getChildAt(0); // 0 : LinearLayout; 1 : CalendarView for(int i = 0; i < dpSpinner.getChildCount(); i ++) { NumberPicker numPicker = (NumberPicker)dpSpinner.getChildAt(i); // 0-2 : NumberPicker LayoutParams params1 = new LayoutParams(120, LayoutParams.WRAP_CONTENT); params1.leftMargin = 0; params1.rightMargin = 30; numPicker.setLayoutParams(params1); // EditText cusET = (EditText)numPicker.getChildAt(0); // CustomEditText // cusET.setTextSize(14); // cusET.setWidth(70); } // Change TimePicker layout LinearLayout tpContainer = (LinearLayout)timePicker.getChildAt(0) ; // LinearLayout LinearLayout tpSpinner = (LinearLayout)tpContainer.getChildAt(0); // 0 : LinearLayout; 1 : CalendarView for(int i = 0; i < tpSpinner.getChildCount(); i ++) { // child(1) is a TextView ( : ) if (i == 1) { continue; } NumberPicker numPicker = (NumberPicker)tpSpinner.getChildAt(i); // 0 : NumberPicker; 1 : TextView; 2 : NumberPicker LayoutParams params3 = new LayoutParams(100, LayoutParams.WRAP_CONTENT); params3.leftMargin = 0; params3.rightMargin = 30; numPicker.setLayoutParams(params3); // EditText cusET = (EditText)numPicker.getChildAt(0); // CustomEditText // cusET.setTextSize(14); // cusET.setWidth(70); }
感觉挺好的,但是发现datepicker完美,而timepicker会报转换错误异常,接下来有了第二种方法:
List<NumberPicker> nbPicker= findNumberPicker(timePicker); for (NumberPicker np : nbPicker) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(120, LayoutParams.WRAP_CONTENT); params.setMargins(0, 0, 0, 0) ; np.setLayoutParams(params); } List<NumberPicker> nbPicker2= findNumberPicker(datePicker); for (NumberPicker np : nbPicker2) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(140, LayoutParams.WRAP_CONTENT); params.setMargins(10, 0, 10, 0) ; np.setLayoutParams(params); } private List<NumberPicker> findNumberPicker(ViewGroup viewGroup) { List<NumberPicker> npList = new ArrayList<NumberPicker>(); View child = null; if (null != viewGroup) { for (int i = 0; i < viewGroup.getChildCount(); i++) { child = viewGroup.getChildAt(i); if (child instanceof NumberPicker) { npList.add((NumberPicker)child); } else if (child instanceof LinearLayout) { List<NumberPicker> result = findNumberPicker((ViewGroup)child); if (result.size() > 0) { return result; } } } } return npList; }
效果如图
相关文章推荐
- 安装Docker Toolbox后出现的问题
- libnet
- AndroidStudio环境下的jni调用(NDK)的方法
- 第一次写博客前的准备(2016-6-30号)
- 欢迎使用CSDN-markdown编辑器
- Html5本地存储和本地数据库
- JAX-RS入门 七: 数据处理(2)
- hibernate延迟加载(get和load的区别)
- HttpClient与HttpURLConnection的请求方式
- hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)
- googlecodejam.Qualification Round Africa 2010.Problem A. Store Credit
- Android内存优化之OOM
- Android自定义条目item优化布局
- JAX-RS入门 六: 数据处理(1)
- 红楼梦 十独吟
- CMSampleBufferRef与byte*互相转换(audio)
- RippleEffect波纹效果
- hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)
- Android 屏幕密度适配
- sum-of-two-integers