Android開發-日期選擇按鈕-步驟方法

一、 實現效果

    外觀仿橫線編輯框的按鈕,點擊按鈕,橫線顏色改變,隨後彈出日期選擇對話框。修改對話框中的值,按鈕文字內容相應改變。

    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);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章