【android】只有小时和分钟的弹出式时间选择器

一、这是什么鬼

在最近的项目中需要用到一个只选择小时和分钟的时间选择器,在网上看了以后发现没有合适的,于是自己参考了一些例子后写了一个,并把它发上来,有需要的可以参考。另外本人也是弱菜,欢迎大家指教。下面上效果图:
【android】只有小时和分钟的弹出式时间选择器_第1张图片

二、这有什么用

MainActivity有一个EditText,点击以后弹出时间选择器,选择后时间会出现到EditText里。当然大家还能自己拿去修改,得到不同的效果。

三、这该怎么写

1)先在activity_main.xml中写布局。

<EditText android:id="@+id/edit"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:editable="false"
      android:cursorVisible="false"
      />

2)接着,写弹出的时间选择器的布局time_dialog.xml,由于是demo就不管布局的美观了哈~

<TextView  
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="请选择日期和时间"
      />

    
    <TimePicker android:id="@+id/time_picker"
      android:layout_width="wrap_content" 
      android:layout_height="100dp"
      android:layout_gravity="center_horizontal"
      />

    <Button
        android:id="@+id/time_sure"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="确定"
        />

3)到MainActivity中完成剩余部分代码。

public class MainActivity extends Activity
{
          private int hour;
          private int minute;
          private String time1;
          private String time2;
          private String dateStr;
          private EditText editText;
          private AlertDialog dialog;

    @SuppressLint("SimpleDateFormat")
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText=(EditText)findViewById(R.id.edit);
        editText.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {

                dialog = new AlertDialog.Builder(MainActivity.this).create();
                dialog.show();
                dialog.getWindow().setContentView(R.layout.time_dialog);

                Calendar c = Calendar.getInstance();
                hour = c.get(Calendar.HOUR);
                minute = c.get(Calendar.MINUTE);

                ((TimePicker) dialog.getWindow().findViewById(R.id.time_picker)).setIs24HourView(true);
                ((TimePicker) dialog.getWindow().findViewById(R.id.time_picker)).setOnTimeChangedListener(new OnTimeChangedListener()
                {


                public void onTimeChanged(TimePicker view, int hourOfDay, int minute)
                  {
                    MainActivity.this.hour = hourOfDay;
                    MainActivity.this.minute = minute;

                    time1=Integer.toString(MainActivity.this.hour);
                    time2=Integer.toString(MainActivity.this.minute);
                    dateStr=time1+":"+time2;

                    Log.i("time-------------->",""+dateStr);
                  }
                });


                dialog.getWindow().findViewById(R.id.time_sure).setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v) {

                        SimpleDateFormat df = new SimpleDateFormat("HH:mm");  
                        try {
                             df.parse(time1+":"+time2);

                        } catch (ParseException e) {
                            e.printStackTrace();
                        }

                        editText.setText(dateStr);
                        dialog.dismiss();
                    }});
                }

            });
        }
}

四、备注补充

本人也是弱菜一枚~,若有什么不足或者错误的地方,希望大家能多多指教。

你可能感兴趣的:(Android)