Android DatePicker / TimePicker 占空间太大的解决办法
DatePicker 与 TimePicker 控件占用的空间是固定的,没有参数可以更改。
如果修改 length 和 width 属性,只会让控件被切割,显示将不完整。很多人说可以使用 scale 属性来放大或缩小
android:scaleX="0.8"
android:scaleY="0.8"
这种方法虽然会缩小控件,但控件还是没法显示全。
找到的一个不错的解决办法是,用 Java 反射机制获取控件相关属性,然后修改。代码如下:
Field[] fields = DatePicker.class.getDeclaredFields();
//get DatePicker fields
View[] v_months = null;
EditText [] v_edits;
int size = fields.length;
v_edits = new EditText [size];
v_months = new View [size];
for(int i=0;i<size;i++) {
fields[i].setAccessible(true);
if(fields[i].getType().getSimpleName().equals("NumberPicker")) {
try {
v_months[i] = (View)fields[i].get(datePicker1);
/* change width of the line in the picker */
v_months[i].measure(0, 0);
v_months[i].getLayoutParams().width = (int) (v_months[i].getMeasuredWidth() * 0.7f);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
}
for(int i=0;i<size;i++) {
if(v_months[i] != null) {
fields = v_months[i].getClass().getDeclaredFields();
for(Field field : fields) {
field.setAccessible(true);
if(field.getType().getName().equals(EditText.class.getName())) {
try {
v_edits[i] = (EditText) field.get(v_months[i]);
/* change text size and color of the picker */
v_edits[i].setTextSize(5);
v_edits[i].setTextColor(getResources().getColor(R.color.holo_blue));
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
}
}
}
用这种方法,可以结合 scale 属性来达到任意修改这两种控件大小的目的。
参考文章:
http://yq135314.iteye.com/blog/1998653
Android DatePicker / TimePicker 占空间太大的解决办法的更多相关文章
- 刚装的系统C盘占空间特别大怎么办?关闭win7的系统还原和调整虚拟内存
刚装的win7系统,C盘占空间特别大,清理垃圾,清理碎片之后还是特别大,检查一下,系统才20G,C盘却占用了40G,其实是没有关闭系统还原,再就是没有调整虚拟内存.win7旗舰版(其他版本也可能这样, ...
- Unity3D占用内存太大的解决方法
原地址:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大 ...
- (转)Unity3D占用内存太大的解决方法
自:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. ...
- Mysql删除数据后磁盘空间未释放的解决办法【转】
转自 Mysql删除数据后,磁盘空间未释放的解决办法 - 今日头条(TouTiao.com)http://toutiao.com/a6303087712678412546/?tt_from=mobil ...
- 空间不支持openssl解决办法
windows server2003 系统 IIS6.0 ,支付宝担保交易功能不能用,提示您的空间不支持openssl 解决办法如下:1.在C:\WINDOWS 下打开php.ini 将 extens ...
- vs调试windows mobile程序时布署时间太长的解决办法
vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...
- Response.Write()方法响应导致页面字体变大的解决办法
关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法 最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且 ...
- JQuery Mobile 的引用代码,以及在手机浏览器上字体太小的解决办法
JQuery Mobile 的引用代码: <link rel="stylesheet" href="http://code.jquery.com/mobile/1. ...
- html标签被div嵌套页面字体变大的解决办法
html标签被div嵌套页面字体变大的解决办法 <div> <html> <head> <title></title> </head& ...
随机推荐
- linux Crontab 使用
cron 用法说明 全文如下: cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序.例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron ...
- window10上安装python+CUDA+CuDNN+TensorFlow
软件 版本 Window10 X64 python 3.6.4(64位) CUDA CUDA Toolkit 9.0 (Sept 2017) CuDNN cuDNN v7.0.5 (Dec 5, 20 ...
- TCP接入层的负载均衡、高可用、扩展性架构
一.web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡.整个架构分三层: 上游调用层,一般是browser或者APP 中间反向代理层,n ...
- 怎么查看在centos中创建的用户组
用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd 查看可以登录系统的用户:cat /etc/pass ...
- 代替Reflection(反射)的一些方法(转)
作者:JustRun 林肯: http://www.cnblogs.com/JustRun1983/p/3830764.html 代替Reflection(反射)的一些方法(转) 2014-07-08 ...
- SVN代理设置
[SVN代理设置] ~/.subversion/servers文件下可以配置svn的代理. 打开上面那3行,替换为自定义的域名即可.
- 自定义对象实现copy,遵守协议<NSCopying, NSMutableCopying>
自定义对象实现copy,步骤 1.需要遵守NSCopying协议 2.实现协议中的- (id)copyWithZone:(NSZone *)zone 3.在- (id)copyWithZone:(NS ...
- php防止会话固定攻击
问题:希望确保应用不会受到会话固定攻击,即攻击者强制用户使用一个预定义的会话id. 解决方案:要求使用会话cookie但会话标识符不追加到URL,另外要频繁地生成新会话ID: <?php ini ...
- Linux automake命令
1)automake 使用教程 http://loftor.com/archives/automake.html 2)configure.in Makefile.am解析 http://blog.cs ...
- Laravel trait 使用心得
trait 是在PHP5.4中为了方便代码复用的一种实现方式,但目前我在看的的PHP项目中较少看的有程序员去主动使用这个实现方式,在laravel中有很多 trait 的使用,关于trait 在 la ...