一、 實現效果
外觀仿橫線編輯框的按鈕,點擊按鈕,橫線顏色改變,隨後彈出日期選擇對話框。修改對話框中的值,按鈕文字內容相應改變。
1、按鈕點擊前
2、按鈕點擊時
3、按鈕點擊後
二、XML佈局
1、Button所在佈局文件
<Button
android:id="@+id/button_start_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:layout_marginEnd="3dp"
android:gravity="center"
style="?android:attr/buttonBarButtonStyle"
android:background="@drawable/background_edittext_inside_click"
android:textSize="14sp"
android:textColor="@color/color_text_primary"
android:onClick="startDateOnClick" />
2、background_edittext_inside_click.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="false"
android:drawable="@drawable/shape_edittext_inside_false" />
<item
android:state_pressed="true"
android:drawable="@drawable/shape_edittext_inside_true" />
</selector>
3、shape_edittext_inside_false.xml (默認狀態)
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 橫線顏色 -->
<item>
<shape>
<solid android:color="@color/#" />
</shape>
</item>
<!-- 背景顏色,注意要和Button所在組件Background保持一致 -->
<item
android:bottom="1dp" >
<shape>
<solid android:color="@color/#" />
</shape>
</item>
</layer-list>
4、shape_edittext_inside_true.xml (點擊狀態)
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 橫線顏色 -->
<item>
<shape>
<solid android:color="@color/color_edittext_main_true" />
</shape>
</item>
<item
android:bottom="1dp" >
<!-- 背景顏色 -->
<shape>
<solid android:color="@color/color_edittext_inside_background" />
</shape>
</item>
</layer-list>
三、設置監聽
1、定義相關變量
private Button button_start_date;
private DatePickerDialog dialog_datepicker;
private int year1,month1,day1;
2、初始化顯示
Calendar calendar;
calendar = Calendar.getInstance();
year1 = calendar.get(Calendar.YEAR);//獲取年份
month1 = calendar.get(Calendar.MONTH)+1;//獲取月份
day1 = calendar.get(Calendar.DATE);//獲取日
minute1 = calendar.get(Calendar.MINUTE);//分
hour1 = calendar.get(Calendar.HOUR_OF_DAY);//小時
button_start_date = (Button)findViewById(R.id.button_start_date);
// 默認時間顯示
button_start_date.setText("" + year1 + " 年 " + month1 + " 月 " + day1 + " 日");
3、Button的監聽事件
public void startDateOnClick(View Source) {
// 標記位,用於分辨爲開始還是結束時間
flag = 1;
// 彈出選擇對話框
dialog_datepicker.show();
}
4、DataPickerDialog 定義
dialog_datepicker = new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
year1 = year;
month1 = monthOfYear+1;
day1 = dayOfMonth;
button_start_date.setText("" + year1 + " 年 " + month1 + " 月 " + day1 + " 日");
}
}, year1, month1-1, day1);