HackNine 避免在EditText中验证日期

1.概要:

   为什么不直接为EditTText设置一个点击监听器,而非要使用Button呢?
    答案是:使用Button更安全,因为用户无法修改Button的文本内容。如果使用EditText,并且只设置了点击监听器,用户可以通过光标获取该
    控件的焦点,这样便可以绕过DatePicker控件直接修改EditText的文本内容
2.实现思路:
    将Button的背景设置成EditText的背景,在点击后弹去DatePicker控件,选定好时间后修改BUutton的text
3.效果图:
  
4.代码:
 1 public class MainActivity extends Activity {
 2 
 3     private Button btn;
 4     private int year;
 5     private int month;
 6     private int day;
 7     private DatePickerDialog datePickDialog;
 8 
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13         btn = (Button) findViewById(R.id.btn);
14         Calendar calendar = Calendar.getInstance();
15         year = calendar.get(Calendar.YEAR);
16         month = calendar.get(Calendar.MONTH);
17         day = calendar.get(Calendar.DAY_OF_MONTH);
18         datePickDialog = new DatePickerDialog(MainActivity.this,
19                 new OnDateSetListener() {
20 
21                     @Override
22                     public void onDateSet(DatePicker view, int year,
23                             int monthOfYear, int dayOfMonth) {
24                         btn.setText(year + "/" + monthOfYear + "/" + dayOfMonth);
25                     }
26                 }, year, month, day);
27 
28         btn.setOnClickListener(new OnClickListener() {
29 
30             @Override
31             public void onClick(View v) {
32                 datePickDialog.show();
33             }
34         });
35     }
36 
37 }
activity_main.xml
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7 
 8     <Button
 9         android:id="@+id/btn"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:background="@android:drawable/edit_text" />
13 
14 </LinearLayout>

 

 
posted @ 2014-10-29 10:29  perfect亮  阅读(234)  评论(0编辑  收藏  举报