当文本框聚焦时显示日期选择器



我刚刚进入android应用程序,现在试图与允许用户在文本框中输入日期的界面一起工作。日期对话框应该只在文本框聚焦时显示。在对话框中选择日期后,日期将显示在文本框中。现在的问题是,即使文本框没有聚焦,日期对话框也会显示。有人能帮我解决我的问题吗?谢谢。

TimeSheet.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1">

    <EditText
        android:layout_width="190dp"
        android:layout_height="wrap_content"
        android:id="@+id/txtdate"
        android:layout_x="131dp"
        android:layout_y="192dp"
        android:hint="Touch here to select a date"/>
</AbsoluteLayout>

TimeSheet.java

package com.example.project.project;
import android.app.DatePickerDialog;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.ArrayAdapter;
import android.view.View;
import android.os.Bundle;
import android.widget.Button;
import java.util.List;
import java.util.ArrayList;
import android.content.Context;
import android.content.ContentValues;
import android.widget.Toast;
import com.example.project.project.API.TimeSheetAPI;
import com.example.project.project.database.MyDatabaseHelper;

public class TimeSheet extends AppCompatActivity {
    private Spinner spinner,spinner2;
    private Button btnSaved;
    private MyDatabaseHelper dbHelper;
    private TimeSheetAPI ts;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timesheet);
        ts=new TimeSheetAPI(this);  
    }

    public void onStart()
    {
        super.onStart();
        EditText txtDate=(EditText)findViewById(R.id.txtdate);
        txtDate.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus)
            {
                if(hasFocus)
                {
                    DateDialog dialog=new DateDialog(v);
                    FragmentTransaction ft=getFragmentManager().beginTransaction();
                    dialog.show(ft,"DatePicker");
                }
            }
    });
    }

DateDialog.java

package com.example.project.project;
import android.annotation.SuppressLint;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import java.util.Calendar;
/**
 * Created by tongws on 9/14/2015.
 */
@SuppressLint("ValidFragment")
public class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    EditText txtdate;

   public DateDialog(View view)
    {
        txtdate=(EditText)view;
    }

    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        final Calendar c=Calendar.getInstance();
        int year=c.get(Calendar.YEAR);
        int month=c.get(Calendar.MONTH);
        int day=c.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(),this,year,month,day);
    }
    public void onDateSet(DatePicker view,int year, int month, int day)
    {
         String date=day+"-"+(month+1)+"-"+year;
        txtdate.setText(date);
    }
}

一旦活动开始,您的EditText已经集中。若要清除EditText的默认焦点,请在父布局中添加焦点。这可以通过将这行代码添加到父视图中来实现。

android:focusableInTouchMode="true"
例如,

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1"
    android:focusableInTouchMode="true">
<EditText
    android:layout_width="190dp"
    android:layout_height="wrap_content"
    android:id="@+id/txtdate"
    android:layout_x="131dp"
    android:layout_y="192dp"
    android:hint="Touch here to select a date"/>
</AbsoluteLayout>

最新更新