Make DatePicker and TimePicker smaller

2020-02-10 12:18发布

Is there any way to make smaller DatePicker and TimePicker (but to be visible all parts ) in Android ? I tried to set layout_width="130dp" but then DatePicker isn't visible, just left upper corner.

标签: android
6条回答
你好瞎i
2楼-- · 2020-02-10 12:44

This worked for me to fit a date and time picker in a dialogue with a custom layout in landscape mode on a small screen. Set the weightsum of a container (LinarLayout) to 100 and then fill it with widgets adding up to 100 in layout_weight property.

    <LinearLayout
        android:orientation="horizontal" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:weightSum="100"
        android:layout_gravity="center_horizontal">

            <DatePicker 
                android:id="@+id/dlgDateTimePickerDate"
                android:layout_width="wrap_content"
                android:layout_weight="50"
                android:layout_height="wrap_content" />

            <TimePicker
                android:id="@+id/dlgDateTimePickerTime"
                android:layout_weight="50"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
    </LinearLayout>
查看更多
祖国的老花朵
3楼-- · 2020-02-10 12:49

Use properties follow:

Example smaller 80% original

android:scaleY="0.8" 
android:scaleX="0.8"
查看更多
戒情不戒烟
4楼-- · 2020-02-10 12:55

You can simple scale like this:

android:scaleY="0.5" android:scaleX="0.5"

to get the half of the size.

And to get a smaller padding, android:padding="-20dp"

Looking from the framework the picker may overlap other views, but in the app, it will not.

The padding is going to work perfectly and the buttons also.

查看更多
戒情不戒烟
5楼-- · 2020-02-10 13:02

Instead of using "dp" for the layout width , use percentages in weight to make it smaller. For android:layout_weight to be effective, put android:layout_width to 0 dip.

android:layout_height="wrap_content"

android:layout_weight=".33"

android:layout_width="0dip"

android:textSize="12sp"

查看更多
虎瘦雄心在
6楼-- · 2020-02-10 13:02

Another solution:

Put it in a LinearLayout and set the height of the LinearLayout manually

查看更多
狗以群分
7楼-- · 2020-02-10 13:04

(This actually works and others don't) After much searching this worked:

<DatePicker
    android:id="@+id/dp_datepicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleX="0.7"
    android:scaleY="0.7"
    android:layout_marginLeft="-30dp"
    android:layout_marginRight="-30dp"
    android:datePickerMode="spinner"
    />

<TimePicker
    android:id="@+id/tp_timepicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleX="0.7"
    android:scaleY="0.7"
    android:layout_marginLeft="-30dp"
    android:layout_marginRight="-30dp"
    android:timePickerMode="spinner"
    />

The android:scaleX="0.7" is what shrinked the visible picker (it works for DatePicker and TimePicker) and the android:layout_marginLeft="-30dp" allowed for the space to be reduced.

Note: All attempts at using android:padding="-30dp" did not work and using android:layout_margin="-30dp" (without a side specified) also did not work. Hopefully this helps those who were as lost as me

P.S. Google get your freaking DatePicker API fixed!

查看更多
登录 后发表回答