一、这是什么鬼
在最近的项目中需要用到一个只选择小时和分钟的时间选择器,在网上看了以后发现没有合适的,于是自己参考了一些例子后写了一个,并把它发上来,有需要的可以参考。另外本人也是弱菜,欢迎大家指教。下面上效果图:
二、这有什么用
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组件 -->
<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();
}});
}
});
}
}
四、备注补充
本人也是弱菜一枚~,若有什么不足或者错误的地方,希望大家能多多指教。