Android TimePicker 控件

  • Android TimePicker 控件

    Android TimePicker 可让您选择24小时制或AM/PM模式下的一天中的时间。时间包括小时,分钟和时钟格式。Android通过TimePicker类提供此功能。
    为了使用TimePicker类,您必须首先在activity.xml中定义TimePicker组件。它定义如下-
    
    <TimePicker
       android:id="@+id/timePicker1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />
    
    之后,您必须创建一个TimePicker类的对象,并获取上面定义的xml组件的引用。其语法如下。
    
    import android.widget.TimePicker;
    private TimePicker timePicker1;
    timePicker1 = (TimePicker) findViewById(R.id.timePicker1);
    
    为了获得用户在屏幕上选择的时间,您将使用TimePicker类的getCurrentHour()和getCurrentMinute()方法。它们的语法在下面给出。
    
    int hour = timePicker1.getCurrentHour();
    int min = timePicker1.getCurrentMinute();
    
    除了这些方法之外,API中还有其他方法可以更好地控制TimePicker组件。它们在下面列出。
    方法 描述
    is24HourView() 如果在24小时视图中,此方法返回true,否则返回false
    isEnabled() 此方法返回此视图的启用状态
    setCurrentHour(Integer currentHour) 此方法设置当前时间
    setCurrentMinute(Integer currentMinute) 此方法设置当前分钟
    setEnabled(boolean enabled) 此方法设置此视图的启用状态
    setIs24HourView(Boolean is24HourView) 此方法设置为24小时制还是AM / PM模式
    setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener) 此方法设置指示用户已调整时间的回调
  • 示例

    本示例演示计算机的类别,您需要从类别中选择一个类别。要尝试使用此示例,您需要在按照以下步骤开发应用程序后,在实际设备上运行此示例。
    1. 您将使用Android Studio创建一个Android应用程序,并将其命名为Demo,位于com.jc2182.demo包下,如Hello World示例一章中所述。
    2. 修改src/MainActivity.java文件创建一个简单的列TableView,其中包含显示为微调器项目的项目。
    3. 修改res/layout/activity_main.xml文件的默认内容以包括创建一个简单的列表视图。
    4. 修改res/values/string.xml以添加必要的字符串组件。
    5. 运行该应用程序以启动Android模拟器并验证在该应用程序中所做更改的结果。
    以下是修改后的主要活动文件src/com.jc2182.demo/MainActivity.java的内容。该文件可以包括每个基本生命周期方法。
    
    package com.jc2182.demo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.TextView;
    import android.widget.TimePicker;
    
    import java.util.Calendar;
    
    public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
        private TimePicker timePicker1;
        private TextView time;
        private Calendar calendar;
        private String format = "";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            timePicker1 = (TimePicker) findViewById(R.id.timePicker1);
            time = (TextView) findViewById(R.id.textView1);
            calendar = Calendar.getInstance();
    
            int hour = calendar.get(Calendar.HOUR_OF_DAY);
            int min = calendar.get(Calendar.MINUTE);
            showTime(hour, min);
        }
    
        public void setTime(View view) {
            int hour = timePicker1.getCurrentHour();
            int min = timePicker1.getCurrentMinute();
            showTime(hour, min);
        }
    
        public void showTime(int hour, int min) {
            if (hour == 0) {
                hour += 12;
                format = "AM";
            } else if (hour == 12) {
                format = "PM";
            } else if (hour > 12) {
                hour -= 12;
                format = "PM";
            } else {
                format = "AM";
            }
    
            time.setText(new StringBuilder().append(hour).append(" : ").append(min)
                    .append(" ").append(format));
        }
    
        @Override
        public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
            // todo
        }
    
        @Override
        public void onNothingSelected(AdapterView adapterView) {
            // todo
        }
    }
    
    以下是res/layout/activity_main.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="match_parent"
        tools:context=".MainActivity" >
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="@string/time_pick"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    
        <Button
            android:id="@+id/set_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="180dp"
            android:onClick="setTime"
            android:text="@string/time_save" />
    
        <TimePicker
            android:id="@+id/timePicker1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/set_button"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="24dp" />
    
        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/timePicker1"
            android:layout_alignTop="@+id/set_button"
            android:layout_marginTop="67dp"
            android:text="@string/time_current"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView3"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dp"
            android:text="@string/time_selected"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    
    </RelativeLayout>
    
    以下是res/values/strings.xml文件的内容-
    
    <resources>
        <string name="app_name">Demo</string>
        <string name="time_pick">选择时间并按保存按钮</string>
        <string name="time_save">保存</string>
        <string name="time_selected"></string>
        <string name="time_current">时间是:</string>
    </resources>
    
    让我们尝试运行刚刚修改的应用程序。我假设您在进行环境设置时已创建了AVD。要从Android Studio运行该应用,请打开您项目的活动文件之一,然后工具栏中单击“运行”图标。Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将显示在“模拟器”窗口下面-