显示TimePickerDialog

时间:2012-07-08 13:37:30

标签: android android-edittext

我想要点击它来显示TimePickerDialog而不是键盘,当选择时间选择器消失,时间显示在edittext中

这个EditText是像这样的适配器类

public class TminuseistAdaptar  extends ArrayAdapter<Tr> {

    private final Context context;
    ArrayList<Tr> TrBasics ; 

    static final int TIME_DIALOG_ID = 0;

    CheckBox Confirm ; 
    ImageButton DialUp;

     EditText data ; 

    public TminuseistAdaptar(Context context, int  ResourceId,
            ArrayList<Tr> items)
    {


        super(context, ResourceId, items);
         this.context = context;
         this.TrBasics = items ; 

    }

    public View getView(int position, View convertView, ViewGroup parent) {

}
}

我为editText做了类似的事情

textViewEncounterType = (EditText) rowView.findViewById(R.id.TminuseTime);
        textViewEncounterType.setText(TreatementMinuseObject.TBasic.TreatementTime);
        textViewEncounterType.setTag(position);



        textViewEncounterType.setClickable(true);
        textViewEncounterType.setInputType(InputType.TYPE_NULL);

        textViewEncounterType.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                new TimePickerDialog(context, mTimeSetListener, hour, minute, false);

            }
        });

但没有出现,我在另一个类中调用此适配器类扩展Fragement

public class TminusList   extends Fragment {

祝你好运

2 个答案:

答案 0 :(得分:4)

您可以执行以下操作(对于片段实现):

startTxt = (EditText) v.findViewById(R.id.joindate);
startTxt.setClickable(true);
startTxt.setInputType(InputType.TYPE_NULL);

startTxt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DialogFragment newFragment = new TimeDialog();
        newFragment.show(getFragmentManager(), "dialog");
    }
});

和TimeDialog:

public class TimeDialog extends DialogFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // Set your view
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new TimePickerDialog(getActivity(), this, hour, minute, false);      }
}

此代码将导致EditText框弹出timepicker对话框而不是键盘(一旦你输入timepicker对话框代码)。

请注意,您需要在XML中设置EditText(在上面的示例中,它将是带有joindate id的EditText)和android:focusableInTouchMode="false",或者只需点击两下即可打开对话框

答案 1 :(得分:2)

尝试

startTxt.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                //show DateTimepicker
                return true; //very important in your case if you return false keayboard will open
            }
        });