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 占空间太大的解决办法的更多相关文章

  1. 刚装的系统C盘占空间特别大怎么办?关闭win7的系统还原和调整虚拟内存

    刚装的win7系统,C盘占空间特别大,清理垃圾,清理碎片之后还是特别大,检查一下,系统才20G,C盘却占用了40G,其实是没有关闭系统还原,再就是没有调整虚拟内存.win7旗舰版(其他版本也可能这样, ...

  2. Unity3D占用内存太大的解决方法

    原地址:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大 ...

  3. (转)Unity3D占用内存太大的解决方法

    自:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大.  ...

  4. Mysql删除数据后磁盘空间未释放的解决办法【转】

    转自 Mysql删除数据后,磁盘空间未释放的解决办法 - 今日头条(TouTiao.com)http://toutiao.com/a6303087712678412546/?tt_from=mobil ...

  5. 空间不支持openssl解决办法

    windows server2003 系统 IIS6.0 ,支付宝担保交易功能不能用,提示您的空间不支持openssl 解决办法如下:1.在C:\WINDOWS 下打开php.ini 将 extens ...

  6. vs调试windows mobile程序时布署时间太长的解决办法

    vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...

  7. Response.Write()方法响应导致页面字体变大的解决办法

    关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法     最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且 ...

  8. JQuery Mobile 的引用代码,以及在手机浏览器上字体太小的解决办法

    JQuery Mobile 的引用代码: <link rel="stylesheet" href="http://code.jquery.com/mobile/1. ...

  9. html标签被div嵌套页面字体变大的解决办法

    html标签被div嵌套页面字体变大的解决办法 <div> <html> <head> <title></title> </head& ...

随机推荐

  1. 关闭 iTunes 自动同步

    关闭 iTunes 自动同步 iTunes>Edit>perererset>device>Prevent iPods,iPhone, and iPads from syncin ...

  2. 史上最全的Maven Pom文件标签详解

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  3. mongoTemplate.aggregate()聚合查询

    一.概述 1. 聚合的表达式 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*). 下表展示了一些聚 ...

  4. Mybatis之XML使用Enum枚举传递数据

    在Mybatis中,处理枚举类的TypeHandler有两个: EnumTypeHandler: 用于保存枚举名 EnumOrdinalTypeHandler: 用于保存枚举的序号. 在实际项目中,以 ...

  5. Mac 安装Django

    首先 我电脑上的python  是 安装Django  是需要通过 pip  来安装的  最新办的python3.4 应该内置了pip  因此这里 需要下载安装pip pip是常用的Python包管理 ...

  6. archiver error. Connect internal only, until freed. 之解决办法

    这个报错说的是数据库的日志备份不足空间.解决办法: DELETE backup COMPLETED BEFORE 'SYSDATE-7';DELETE ARCHIVELOG ALL COMPLETED ...

  7. C语言基础课First作业

    一.大学和高中最大的不同是没有人天天看着你,也不会担心上课的时候班主任在后门偷偷瞄着我们,通过阅读邹欣老师的博客后,心目中理想的师生关系就是Coach/Trainee(健身教练/健身学员)的关系,想到 ...

  8. BZOJ 4326 NOIP2015 运输计划 (二分+树上差分)

    4326: NOIP2015 运输计划 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1930  Solved: 1231[Submit][Statu ...

  9. Sypder 安装和使用

    一.安装Spyder 我傻傻以为直接下载Spyder就可以用了,但我其实大错特错了.Spyder虽然提供科学计算,但是它还需要一个介于Python和其之间的框架,或者说,显示界面PyQt5.(PyQt ...

  10. iphone在微信中audio 音频无法自动播放

    问题: Html5的audio 音频在电脑端和android端都可以实现自动播放,在iphone上无法实现,下面针对的是微信浏览器里面的解决方法 html代码: <div id="au ...