自定义DatePicker。 Android的

时间:2010-12-01 14:53:34

标签: android layout datepicker

有自定义DatePicker的方法吗?那是我的布局代码。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" 
        android:orientation="vertical">
        <DatePicker 
            android:id="@+id/ad_date_picker"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_margin="5dp"/>
        <TimePicker         
            android:id="@+id/ad_time_picker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_margin="5dp"/>
    </LinearLayout>
</ScrollView>

在这种情况下,DatePicker的日期格式是MM-DD-YYYY,我想把它放在DD-MM-YYYY中,如果它也有可能我想要月份的短名称而不是数字。

我试图找到,怎么做,但没有成功。

谢谢,

穆尔

2 个答案:

答案 0 :(得分:2)

您无法自定义默认值。

来自User Interface页面:

Android提供了一组完全实现的小部件,如按钮,复选框和文本输入字段,因此您可以快速构建UI。 Android提供的一些小部件更复杂,如日期选择器,时钟和缩放控件。但您不仅限于Android平台提供的各种小部件。如果您想要做更多自定义的事情并创建自己的可操作元素,您可以通过定义自己的View对象或扩展和组合现有的小部件来实现。

Building Custom Components中阅读更多内容。

答案 1 :(得分:0)

尝试此代码

将以下代码放入xml文件中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linear_bottom_par"
        android:background="@color/gray_dark_more"
        android:gravity="center_horizontal"
        android:orientation="vertical">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:id="@+id/linear_date_time"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:orientation="vertical">

                <DatePicker
                    android:id="@+id/dlgDatePicker"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TimePicker
                    android:id="@+id/timePicker1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

            </LinearLayout>
        </ScrollView>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linear_bottom_par"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:background="@color/gray_dark_more"
        android:gravity="center"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/linear_select_time"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/margin_padding_10"
            android:layout_marginEnd="@dimen/margin_padding_20"
            android:layout_marginLeft="@dimen/margin_padding_20"
            android:layout_marginRight="@dimen/margin_padding_20"
            android:layout_marginStart="@dimen/margin_padding_20"
            android:layout_marginTop="@dimen/margin_padding_10"
            android:background="@drawable/orange_ripple_effect"
            android:gravity="center"
            android:orientation="vertical"
            android:padding="@dimen/margin_padding_15">

            <TextView
                android:id="@+id/tv_selecttime"
                style="@style/textappearance_large_white"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/select_time"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>


</RelativeLayout>

在您的活动或片段中插入以下代码

        final Dialog dialog = new Dialog(ConfirmBookingActivity.this, android.R.style.Theme_Holo_Dialog);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.dialog_date_picker);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        final DatePicker dp = (DatePicker) dialog.findViewById(R.id.dlgDatePicker);
        final TimePicker tp = (TimePicker) dialog.findViewById(R.id.timePicker1);

        LinearLayout linear_select_time = (LinearLayout) dialog.findViewById(R.id.linear_select_time);

        dp.setCalendarViewShown(false);
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
        cal.add(Calendar.HOUR_OF_DAY, 1);

        dp.init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {
                Log.d("Date", "Year=" + year + " Month=" + (month + 1) + " day=" + dayOfMonth);
                calDay = dayOfMonth;
                calMonth = month + 1;
                calYear = year;

                checkAndUpdateValue(tp);
            }
        });


        linear_select_time.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

            });