使日期选择器和时间选择器变小

18

有没有办法在Android中使DatePicker和TimePicker变小(但仍然可见)?我尝试将layout_width设置为“130dp”,但是DatePicker只显示在左上角。


你可以尝试使用以下内容:http://andmobidev.blogspot.com/2010/01/setting-width-of-view-using-percentage.html - apps
嘿 - 我不确定这会不会对你有所帮助,但我也发现原始的TimePicker相当笨重,因此我自己制作了一个 :) 请查看我的原始问题以获取更多信息。我制作的TimePicker大约是原始版本的一半大小 - 所以它绝对更小 :). - Ready4Android
请查看我的解决方案(希望您能接受它,因为这个页面是我在谷歌搜索中的第一个结果,而且我花了几个小时来修复它)。 - HaydenKai
按照这个答案去做,它能够很好地工作! https://dev59.com/Emw15IYBdhLWcg3wWqV0#34523787 - cuasodayleo
6个回答

19

使用以下属性:

例如,将原始大小缩小80%

android:scaleY="0.8" 
android:scaleX="0.8"

2
[注意:需要API级别11(Android 3.0)](http://developer.android.com/reference/android/view/View.html#setScaleX(float))。 - Pang
17
它仍占据着相同的空间(日期选择器较小,但周围有大的边距和无用空间)。 我该如何解决这个问题? - Allan Ramírez
也许你需要自定义你的日期选择器。例如:https://github.com/luminousman/DatePicker - Huỳnh Ngọc Bang
Allan Ramírez是正确的,选择器已经缩小了,但它仍然占据着相同的空间。 - Jose Manuel Abarca Rodríguez

7

这个方法可行,而其他方法却不行。在大量搜索后,我发现以下方法可行:

<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"
    />
android:scaleX="0.7"是用来缩小可见的选择器的(适用于DatePickerTimePicker),而android:layout_marginLeft="-30dp"则允许减少空间。
注意: 所有尝试使用android:padding="-30dp"都没有成功,使用android:layout_margin="-30dp"(未指定侧面)也没有成功。希望这对那些像我一样迷失方向的人有所帮助。
附言:Google请修复你该死的DatePicker API!

1

在布局宽度上,不要使用“dp”,而是使用权重百分比来使其更小。 对于 Android:要使 android:layout_weight 生效,请将 android:layout_width 设置为 0 dip。

android:layout_height="wrap_content"

android:layout_weight=".33"

android:layout_width="0dip"

android:textSize="12sp"

这段内容与编程有关。

2
实际上,当我回答时,它曾经是有效的。现在随着框架的发展,它已经失效了。 - Muhammad Shahab

1
这对我很有帮助,可以在小屏幕的横向模式下,在具有自定义布局的对话框中放置日期和时间选择器。将容器(LinarLayout)的weightsum设置为100,然后使用layout_weight属性添加总和为100的小部件来填充它。
    <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>

0
你可以像这样简单地进行缩放: android:scaleY="0.5" android:scaleX="0.5" 以获得一半的大小。
要获得更小的填充,请使用android:padding="-20dp" 从框架中查看,选择器可能会重叠其他视图,但在应用程序中不会。
填充将完美地工作,按钮也是如此。

android:padding="-20dp" 对于TimePicker没有任何作用。 - comrade

-2

另一种解决方案:

将其放入LinearLayout中,并手动设置LinearLayout的高度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接