我想添加新的按鈕,這是清除按鈕,日期選擇器部件和時間選擇器部件在我的android應用程序。在默認情況下,這些小部件有兩個按鈕,即設置和取消。我怎樣才能爲這兩個按鈕添加一個按鈕如何在android中的日期選擇器小部件中添加新按鈕?
這可能嗎?如果是的話,你可以舉一些例子嗎?
感謝
我想添加新的按鈕,這是清除按鈕,日期選擇器部件和時間選擇器部件在我的android應用程序。在默認情況下,這些小部件有兩個按鈕,即設置和取消。我怎樣才能爲這兩個按鈕添加一個按鈕如何在android中的日期選擇器小部件中添加新按鈕?
這可能嗎?如果是的話,你可以舉一些例子嗎?
感謝
這是我如何實現我的應用程序「清除」按鈕。當用戶點擊清除時,年/月/日值全部爲0.您可以在您的應用中使用onDateSet()來設置按鈕和清除按鈕。
我引用了Android源代碼(\ frameworks \ base \ core \ java \ android \ app \ DatePickerDialog.java)。
我也使用了esilver的幫助。
public class DatePickerDialogPlus extends DatePickerDialog {
private final DatePicker mDatePicker;
private final OnDateSetListener mCallBack;
/**
* @param context The context the dialog is to run in.
* @param callBack How the parent is notified that the date is set.
* @param year The initial year of the dialog.
* @param monthOfYear The initial month of the dialog.
* @param dayOfMonth The initial day of the dialog.
*/
public DatePickerDialogPlus(Context context, OnDateSetListener callBack,
int year, int monthOfYear, int dayOfMonth) {
super(context, 0, callBack, year, monthOfYear, dayOfMonth);
mCallBack = callBack;
Context themeContext = getContext();
setButton(BUTTON_POSITIVE,
themeContext.getText(R.string.datePicker_setButton), this);
setButton(BUTTON_NEUTRAL,
themeContext.getText(R.string.datePicker_clearButton), this);
setButton(BUTTON_NEGATIVE,
themeContext.getText(R.string.datePicker_cancelButton), null);
setIcon(0);
setTitle(R.string.datePicker_title);
LayoutInflater inflater = (LayoutInflater)
themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.date_picker_dialog, null);
setView(view);
mDatePicker = (DatePicker) view.findViewById(R.id.datePicker);
mDatePicker.init(year, monthOfYear, dayOfMonth, this);
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (mCallBack != null) {
if (which == BUTTON_POSITIVE) {
mDatePicker.clearFocus();
mCallBack.onDateSet(mDatePicker, mDatePicker.getYear(),
mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
} else if (which == BUTTON_NEUTRAL) {
mDatePicker.clearFocus();
mCallBack.onDateSet(mDatePicker, 0, 0, 0);
}
}
}
}
只需創建此類!
import android.app.DatePickerDialog;
import android.content.Context;
public class DatePickerWithNeutral extends DatePickerDialog {
public DatePickerWithNeutral(Context context, OnDateSetListener callBack,
int year, int monthOfYear, int dayOfMonth) {
super(context, 0, callBack, year, monthOfYear, dayOfMonth);
setButton(BUTTON_POSITIVE, ("Ok"), this);
setButton(BUTTON_NEUTRAL, ("Something"), this); // ADD THIS
setButton(BUTTON_NEGATIVE, ("Cancel"), this);
}
}
然後使用它來添加功能!
date.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Neutral Button Clicked!",
Toast.LENGTH_LONG).show();
}
});
貌似這個
享受:)
只需添加一箇中立的按鈕。
DatePickerDialog dialog = new DatePickerDialog(context, 0, callback, year, month, day);
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "Name", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Your code
}
});
這應該是公認的答案 – SjoerdvGestel 2016-11-09 10:42:54
其工作好的解決方案 – kondal 2017-03-28 06:57:56
問題也引用添加明確按鈕,一個TimePicker,這是什麼把我帶到這裏。
對於任何感興趣的人,下面是如何爲Dialog Fragment中的TimePicker執行此操作。
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener, TimePickerDialog.OnClickListener {
private static final String HOURS_ARG_KEY = "hours";
private static final String MINUTES_ARG_KEY = "minutes";
private static final String TARGET_ARG_KEY = "target";
public static TimePickerFragment newInstance(int hours, int minutes, int targetResId,...other values...) {
TimePickerFragment tpf = new TimePickerFragment();
Bundle args = new Bundle();
//Setup the TimePickerFragment with some args if required.
args.putInt(HOURS_ARG_KEY, hours);
args.putInt(MINUTES_ARG_KEY, minutes);
args.putInt(TARGET_ARG_KEY, targetResId);
tpf.setArguments(args);
return tpf;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker if we get nothing from
// from the arguments.
final Calendar c = Calendar.getInstance();
int hour = getArguments().getInt(HOURS_ARG_KEY,c.get(Calendar.HOUR_OF_DAY));
int minute = getArguments().getInt(MINUTES_ARG_KEY, c.get(Calendar.MINUTE));
// Create a new instance of TimePickerDialog and return it
TimePickerDialog tpd = new TimePickerDialog(getActivity(), this, hour, minute, false);
// And add the third button to clear the target field.
tpd.setButton(DialogInterface.BUTTON_NEUTRAL,getActivity().getText(R.string.clear), this);
return tpd;
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// Do something with the time chosen by the user
int target = getArguments().getInt(TARGET_ARG_KEY,0);
//Get reference of host activity (XML Layout File) TextView widget
TextView txt = (TextView) getActivity().findViewById(target);
//Format the hourOfDay and minute values, then display the user changed time on the TextView
txt.setText(...FORMATTED TIME...);
}
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == DialogInterface.BUTTON_NEUTRAL) {
int target = getArguments().getInt(TARGET_ARG_KEY,0);
//Get reference of host activity (XML Layout File) TextView widget
TextView txt = (TextView) getActivity().findViewById(target);
//Clear the field.
txt.setText("");
}
}
}
然後,從活動加載它:
TimePickerFragment tpf = TimePickerFragment.newInstance(...args...);
tpf.show(getFragmentManager(), "timePicker");
感謝您對本代碼,但在ICS明確,並設置按鈕不起作用正確總是 – Jamshid 2013-01-09 08:57:41