在xml中将DatePicker和TimePicker一起显示在一起

时间:2014-06-10 16:47:26

标签: android datepicker timepicker

Android Studio 0.6.0
minSdkVersion 10
targetSdkVersion 19

您好,

<DatePicker
    android:id="@+id/datePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:calendarViewShown="false"
    android:scaleX="0.5"
    android:scaleY="0.5"
    android:layout_alignParentLeft="true"/>

<TimePicker
    android:id="@+id/timePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleX="0.5"
    android:scaleY="0.5"
    android:layout_alignParentRight="true"
    android:layout_alignBaseline="@id/datePicker"/>
</LinearLayout>

我有以下包含DatePicker和TimePicker的xml。但是,当我在设备上进行测试时,它们太大而不能并排放置。

我已经尝试弄乱了重量并尝试使宽度和高度变小但它仍然看起来不正确。

enter image description here

非常感谢任何建议,

3 个答案:

答案 0 :(得分:2)

我尝试了你的问题并找到了this link。虽然缩放缩小了选择器的大小(我试过0.5)但是我无法将两个视图放在同一个布局上。这是由于相应拾取器中的填充而发生的。下面是样本xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:calendarViewShown="false"
        android:scaleX="0.5"
        android:scaleY="0.5" >
    </DatePicker>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <TimePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleX="0.5"
        android:scaleY="0.5" >
    </TimePicker>
</LinearLayout>

答案 1 :(得分:1)

尝试使用以下嵌套布局来实现所需的视觉显示。 请注意,如果您不喜欢日期和时间的可滚动视图,则显示的EditText布局只是一种替代方案。

日期和时间选择器的填充,高度和宽度等属性是严格的,因此不能仅在XML中进行修改。缩放它们使它们看起来很奇怪。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="20dp" >

    <HorizontalScrollView
        android:id="@+id/dateScrollView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" >

            <DatePicker
                android:id="@+id/datePicker"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.5" />
        </LinearLayout>
    </HorizontalScrollView>

    <HorizontalScrollView
        android:id="@+id/timeScrollView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" >

            <TimePicker
                android:id="@+id/timePicker1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.5" />
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

<TextView
    android:id="@+id/dateTimeInstructions"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="20dp"
    android:text="Swipe across Date and Time widgets above to see hidden parts as needed"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingTop="30dp" >

    <EditText
        android:id="@+id/dateInput"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:ems="10"
        android:hint="Enter Date here"
        android:inputType="date" />

    <EditText
        android:id="@+id/timeInput"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:ems="10"
        android:hint="Enter Time here"
        android:inputType="time" />
</LinearLayout>

答案 2 :(得分:0)

在布局上执行以下操作:

1。 (a)将根布局从LinearLayout更改为RelativeLayout。

1。 (b)在“选择器”布局上设置以下属性:

DatePicker: android:layout_alignParentRight="true"

TimePicker: android:layout_alignParentLeft="true"

您可以按照两个选择器所需的任何顺序交换属性。

2。为每个布局提供ID以供参考。

3。在其中任何一项上,设置以下属性:android:layout_alignBaseline="@+id/OTHER_LAYOUT_ID",例如假设您为 DatePicker 布局提供了“datepicker”ID,则可以在 TimePicker <上设置“alignBaseline”属性/ strong> as;

android:layout_alignBaseline="@+id/datepicker"

这将使两个布局在同一行上水平对齐。

注意:这些属性最适合按钮等元素和其他较小的表单字段。