我有自定义样式的活动,我希望我的活动有一个自定义标题栏,所以我创建了以下样式:
<style name="costum_titlebar">
<item name="android:background">@color/titlebar_background</item>
</style>
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowTitleSize">@dimen/titlebar_size</item>
<item name="android:windowTitleBackgroundStyle">@style/costum_titlebar</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在清单中我使用:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomTheme" >
Run Code Online (Sandbox Code Playgroud)
在我使用的活动中:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
this.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.setting_activity_titlebar);
Run Code Online (Sandbox Code Playgroud)
到目前为止它很好并且工作正常,我有自定义标题栏的活动.
现在我想使用datePickerDialog.问题是对话框看起来很旧:

但我希望它看起来像这样:

我也有这种风格:
<style name="AppBaseTheme" parent="android:Theme.Light">
Run Code Online (Sandbox Code Playgroud)
所以我用它来创建DatePickerDialog,如下所示:
new DatePickerDialog(getActivity(),R.style.AppBaseTheme, this, year, month, day);
Run Code Online (Sandbox Code Playgroud)
但主题不适用.
只是为了测试,我创建了一个默认样式的第二个应用程序,只有一个按钮来打开日期选择器,所以datepicker看起来像我想要的.两个应用都有android:minSdkVersion="8"
我认为问题出在自定义标题栏上,那么我如何才能获得所需风格的自定义标题栏和日期选择器呢?
编辑:
我改变android:minSdkVersion="11"
了
<style name="datePickerTheme" parent="@android:style/Widget.Holo.DatePicker"></style>
和
new DatePickerDialog(getActivity(),R.style.datePickerTheme, this, year, month, day);
但结果仍然是一样的.
我有一项活动,我需要接受两个日期,开始日期和结束日期.我有两个按钮,点击它们会显示日期选择器.输入日期后,我需要使用SharedPreferences存储此日期.我正在使用本教程:
http://developer.android.com/guide/topics/ui/controls/pickers.html
我在两个日期选择器上看到了问题,但没有一个使用DialogFragment.他们使用已弃用的函数,我真的不想使用它们,因为我听说最好使用DialogFragment.
现在我该如何处理两个日期选择器?我怎么知道在onDateSet函数中点击了哪个按钮(startButton或endButton)?有没有办法在我点击按钮时创建的DialogFragment中存储视图ID,以便我可以在onDateSet中访问它?
任何帮助都会很棒,谢谢.
我正在尝试DatePickerDialog在我的应用中显示一个.但我意识到,DatePickerDialog显示出来取决于手机操作系统.我的问题是我如何在操作系统中显示KitKat风格?我知道这是可能的,因为Facebook等一些应用程序正在使用它.DatePickerLollipop
这就是我要的
android android-datepicker datepickerdialog android-4.4-kitkat android-5.0-lollipop
我正在开发一个应用程序,我正在使用自定义日期和时间选择器.我已经创建了一个对话框,里面我现在分别显示日期和时间选择器,我想设置日期选择器的最小和最大限制.例如,一个人不应该从今天开始选择前一个日期,也不能超过一个月.这是我的代码
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final DatePicker picker = new DatePicker(getActivity());
try {
Field f[] = picker.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mYearPicker") || field.getName().equals("mYearSpinner")) {
field.setAccessible(true);
Object yearPicker = new Object();
yearPicker = field.get(picker);
((View) yearPicker).setVisibility(View.GONE);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
picker.setCalendarViewShown(false);
picker.setMinDate(new Date().getTime());
builder.setTitle("Please select date on which you would be leaving :")
.setView(picker)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SimpleDateFormat parseFormat = new SimpleDateFormat("EEE dd …Run Code Online (Sandbox Code Playgroud) 我目前正在制作一份注册表,其中一个字段是针对用户的出生日期.我想使用datepicker,但是我不希望日历布局如下所示:
我希望布局看起来像这样,这样就更容易选择年份和月份而无需滚动所有内容:
但是我不知道如何解决这个问题,或者将什么放在styles.xml文件中.任何帮助将不胜感激.
我正在构建一个使用DatePickerDialog的应用程序,允许用户选择他们的生日.这是现在加载对话框的代码:
private void selectBirthdate() {
int year, month, day;
if (mBirthDate == null) {
year = DEF_YEAR;
month = DEF_MON;
day = DEF_DAY;
}
else {
year = mBirthDate.get(Calendar.YEAR);
month = mBirthDate.get(Calendar.MONTH);
day = mBirthDate.get(Calendar.DAY_OF_MONTH);
}
new DatePickerDialog(
getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
mBirthDate = new GregorianCalendar();
mBirthDate.set(Calendar.YEAR, year);
mBirthDate.set(Calendar.MONTH, month);
mBirthDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
if (mTxtBirthDate != null) {
mTxtBirthDate.setText(mBirthDateFormat.format(mBirthDate.getTime()));
}
}
},
year,
month,
day
).show();
}
Run Code Online (Sandbox Code Playgroud)
但是,他们希望能够使用旧式微调器DatePicker,因为在新的日历视图中,用户并不总是可以更改年份.所以我一直在研究这个主题,根据我读过的内容,应该可以使用主题强制DatePickerDialog进入Spinner模式.所以这就是我所做的. …
android android-datepicker android-alertdialog android-styles

这是我单独用于材质日历的样式,除了选定的日期圈之外,一切都很完美
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorAppBackground</item>
<item name="android:actionMenuTextAppearance">@style/RobotoMenuText</item>
<item name="titleTextAppearance">@style/RobotoMenuText</item>
<item name="android:windowIsTranslucent">true</item>
<item name="titleTextStyle">@style/RobotoMenuText</item>
<item name="colorSurface">@color/colorAppGreen</item>
<item name="materialCalendarTheme">@style/CalenderTheme</item>
<item name="materialCalendarFullscreenTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen</item>
<item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
</style>
<style name="CalenderTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorAppBackground</item>
</style>
Run Code Online (Sandbox Code Playgroud) android android-datepicker android-studio material-design material-components-android
当EditTextUI中的一行获得焦点时,将DatePickerFragment启动用户输入日期.
在方向更改时,如果EditText线具有焦点和先前输入的日期(这样length() > 0),我不希望片段自动显示.
有没有办法修改或添加代码,以便如果新创建活动并且该EditText行具有焦点,它将不会自动启动 DatePickerFragment?
做某事是不是一个好主意onResume()?
或做的东西savedInstanceState()和!=null?
public class Activity extends AppCompatActivity {
...
EditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
...
if (hasFocus && (EditText.getText().length() == 0)) {
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
else if (hasFocus && (EditText.getText().length() > 0)) {
...
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
}
});
}
Run Code Online (Sandbox Code Playgroud) 我在DatePickerDialog的右侧看到一个额外的空间,仅在Android M&N版本上。在基于L的版本中未观察到。这是屏幕截图:

有人遇到过这个问题吗?
这是DatePickerFragment的实现:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public static DatePickerFragment newInstance(int day, int month, int year)
{
DatePickerFragment frag = new DatePickerFragment();
Bundle args = new Bundle();
args.putInt("day", day);
args.putInt("month", month);
args.putInt("year", year);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
int year = getArguments().getInt("year");
int month = getArguments().getInt("month");
int day = getArguments().getInt("day");
DatePickerDialog datePickerDialog =new DatePickerDialog(getActivity(), this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
return datePickerDialog;
}
@Override
public void onDateSet(DatePicker …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何在Android Dialog中设置默认显示年份DatePicker.我们的场景是第一个用户必须选择年份和月份,最后在对话框中选择日期DatePicker.对于此要求,我们需要在打开对话框时打开年度显示.
PFB图像链接.请参考右侧图像,默认情况下应该打开.
