解决android datepicker timepicker 同行显示问题(适配全屏)


前言

最近在写项目时用到datepicker  timepicker放置在同一行组合,测试时遇到适配问题。然后百度才发现 datepicker 和timepicker本来都是很大的东西,放置在同一行效果不是很好。百度查阅好多虽然有解决方法  不过太死板,设置的单位是基于 px。


基本方法还是按照获取timepicker和datepicker中的numberPicker来设置具体参数

/**
 * 调整FrameLayout大小
 *
 * @param tp
 */
public static void resizePikcer(FrameLayout tp) {
    float[] size = null;
    //npList size==3 代表 datepicker 年月日宽度对应为 0.25f 0.2f 0.2f
    //npList size==2 代表 timepicker 时分宽度对应为 0.175f 0.175f
    List
     
     
      
       npList = findNumberPicker(tp);
    if (npList.size() == 3) {
        size = new float[]{0.25f, 0.2f, 0.2f};
    } else if (npList.size() == 2) {
        size = new float[]{0.175f, 0.175f};

    }
    for (int i = 0; i < npList.size(); i++) {
        NumberPicker np = npList.get(i);
        resizeNumberPicker(np, size[i]);
    }
}

/**
 * 得到viewGroup里面的numberpicker组件
 *
 * @param viewGroup
 * @return
 */
private static List
      
      
       
        findNumberPicker(ViewGroup viewGroup) {

    List
       
       
        
         npList = new ArrayList
        
        
         
         ();
    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
         
         
           result = findNumberPicker((ViewGroup) child); if (result.size() > 0) { return result; } } } } return npList; } /** * 调整numberpicker大小 * @param np * @param size 每个numberPicker对应分得屏幕宽度 */ private static void resizeNumberPicker(NumberPicker np, float size) { int dp5 = dipToPixel(np.getContext(), 5); //timepicker 时 分 左右各自有8dp空白 int dp32 = dipToPixel(np.getContext(), 32); //屏幕宽度 - timepicker左右空白 -自设周边5dp空白 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) ((getScreenWidth(np.getContext()) - dp32 - dp5 * 10) *size), ViewGroup.LayoutParams.WRAP_CONTENT); params.setMargins(dp5, 0, dp5, 0); np.setLayoutParams(params); } 
         
        
        
       
       
      
      
     
     

 

getScreenWidth为获取屏幕宽度

因为我是在工具类中写的方法所以调用方式直接为
UtilMethod.resizePikcer(datePicker);
UtilMethod.resizePikcer(timePicker);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值