在某些应用来说,有时会看的到这些的工具,像是预约、或是创立帐号时要输入的生日等,都算是好用的一个小功能,也是我在写专案有写到的小功能之一,首先看到效果图:
我做的布局稍稍比较简单一点,上面的部分就是datepicker(日期选择器),而下面的部分是timepicker(时间选择器),大约就是我透过按钮可以呼叫出Android设计的选择器样板(写在onClick对应的方法内),另外也可以在activity中透过set、get来进行取值、设定文字等操作。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textview"
android:layout_width="186dp"
android:layout_height="39dp"
android:gravity="left|center"
android:text="日期:"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.209" />
<TextView
android:id="@+id/textview2"
android:layout_width="186dp"
android:layout_height="39dp"
android:gravity="left|center"
android:text="时间:"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.6"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.596" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="224dp"
android:onClick="datePicker"
android:text="选择"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.47"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="484dp"
android:onClick="timePicker"
android:text="选择"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
public class MainActivity extends AppCompatActivity {
//显示日期、时间
TextView textDate,textTime;
//这个dialog的监听物件(目前空)
DatePickerDialog.OnDateSetListener pickerDialog;
TimePickerDialog.OnTimeSetListener timeDialog;
Calendar calendar = Calendar.getInstance();//用来做date
Calendar calendar1 = Calendar.getInstance();//用来做time
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textDate=findViewById(R.id.textview);
textTime=findViewById(R.id.textview2);
//date里面dialog的日期选择给Calendar.xxx及日期文字的显示
pickerDialog= new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
calendar.set(Calendar.YEAR,year);//年
calendar.set(Calendar.MONTH,month);//月(*注意:此处的月份从0~11*)
calendar.set(Calendar.DATE,dayOfMonth);//日
textDate.setText("日期:"+year+"/"+(month+1)+"/"+dayOfMonth);//使其月份+1显示
}
};
//time里面dialog时间的选择给Calendar.xxx及时间的显示
timeDialog= new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calendar1.set(Calendar.HOUR,hourOfDay);//小时
calendar1.set(Calendar.MINUTE,minute);//分钟
textTime.setText("时间:"+hourOfDay+"时"+minute+"分");
}
};
}
public void datePicker(View v){
//建立date的dialog
DatePickerDialog dialog = new DatePickerDialog(v.getContext(),
pickerDialog,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
public void timePicker(View v){
//建立time的dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(v.getContext(),
timeDialog,
calendar1.get(Calendar.HOUR),
calendar1.get(Calendar.MINUTE),
false);
timePickerDialog.show();
}
}
最後附上date里面的month他是跑0~11的图:
记得setText要显示month时,要将他进行+1的动作,不然显示会少一个月。
前情提要 一般在用 Xcode 创新专案的时候,会预设使用 Main.storyboard 来作为我...
昨天跟大家介绍trycatch-finally,今天就来跟大家说说抛出例外(throw)吧!!! 抛...
CDH 5.16.2 Deploy Cloudera Manager 载点 https://docs...
前面我们介绍了单pod建立service,不过实务上这种做法很没必要。 因为service的工作是提...
阿嬷都看得懂的开始写第一支 .css 档案罗! 昨天我们介绍了怎麽使用 style 标签,把所有 C...