我想要点击它来显示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 {
祝你好运
答案 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
}
});