看了这个博主的文字很受益 https://blog.csdn.net/w18756901575/article/details/51456178
大家可以去看看 ,他写的很详细,我在他的基础上修改用到自己的项目里了,给这位大大比心ღ( ´・ᴗ・` )
这次的还是在之前的点击按钮隐藏布局的基础上做的,所以关于日历和时间是两个按钮和两个text view来显示选择的值得
<Button
android:id="@+id/showdailog"
android:layout_width="86dp"
android:layout_height="29dp"
android:background="@drawable/button1"
android:lineSpacingExtra="17dp"
android:text="日期选择"
android:textColor="#FFFFFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.151"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.425" />
<TextView
android:id="@+id/day"
android:layout_width="206dp"
android:layout_height="40dp"
android:lineSpacingExtra="27dp"
android:textColor="#333333"
android:textSize="15sp"
app:layout_constraintBaseline_toBaselineOf="@+id/showdailog"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.91"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.615" />
<Button
android:id="@+id/time"
android:layout_width="86dp"
android:layout_height="29dp"
android:background="@drawable/button1"
android:lineSpacingExtra="17dp"
android:text="时间选择"
android:textColor="#FFFFFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.151"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.57" />
<TextView
android:id="@+id/day_time"
android:layout_width="206dp"
android:layout_height="39dp"
android:lineSpacingExtra="27dp"
android:textColor="#333333"
android:textSize="15sp"
app:layout_constraintBaseline_toBaselineOf="@+id/time"
app:layout_constraintHorizontal_bias="0.91"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
在activity里就按照那个大大写的就可以了,
显示的话直接settext
时间一样。
不过需要注意的是,时间用的是calendar,所以他的显示不是觉绝对 xx:xx 的格式,比如05:05会显示为1:5,17:07会显示为17:7,貌似是xx:0x 都会显示为xx:x,如果是0x:0x的话显示就是x:x,这里感觉会有点怪。
初始界面:
点击日期和时间选择:
最后显示在上面,和上面图选的值没关系,这是又选的
OK!大功告成,撒花✿✿ヽ(°▽°)ノ✿ 准备准备下班
-------------------------于2020.04.14补充---------------------------------
源码:
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="horizontal"
android:gravity="center">
<Button
android:id="@+id/btTime"
android:layout_width="150dp"
android:layout_height="50dp"
android:text="@string/time"
android:textSize="22sp"
android:textColor="#ffffff"
android:background="@drawable/button_green_bg"/>
<Button
android:id="@+id/btCalender"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_marginLeft="20dp"
android:text="@string/calender"
android:textSize="22sp"
android:textColor="#ffffff"
android:background="@drawable/button_green_bg"/>
</LinearLayout>
</LinearLayout>
其中的button_green_bg:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#569DA7" />
<corners android:radius="20dp" />
</shape>
Activity:
package com.tzbc.databindtest;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "tzbc";
private Button buttonTime, buttonCalender;
private DatePickerDialog datePickerDialog;
private TimePickerDialog timePickerDialog;
private Calendar calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//日历初始化
calendar = Calendar.getInstance();
buttonTime = findViewById(R.id.btTime);
buttonCalender = findViewById(R.id.btCalender);
buttonTime.setOnClickListener(this);
buttonCalender.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btTime:
showTimeDialog();
break;
case R.id.btCalender:
showCalenderDialog();
break;
}
}
private void showTimeDialog() {
timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String time = hourOfDay + "时" + minute + "分";
Log.e(TAG, "time : " + time);
}
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true);
timePickerDialog.show();
}
private void showCalenderDialog() {
datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String calender = year + "年" + (month + 1) + "月" + dayOfMonth + "日";
Log.e(TAG, "calender : " + calender);
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
}
PS:日历和时间的背景颜色取决于colorAccent
改变一下colorAccent的颜色为橙色
----源码及APK链接----:
https://download.csdn.net/download/qq_38110571/12532056
https://download.csdn.net/download/qq_38110571/12532049