【问题标题】:Customize style Theme.Holo.Light.Dialog.MinWidth for DatePicker为 DatePicker 自定义样式 Theme.Holo.Light.Dialog.MinWidth
【发布时间】:2017-03-31 15:35:23
【问题描述】:

我正在使用 datePicker 输入日期。

<style name="DatePickerTheme" parent="@android:style/Theme.Holo.Light.Dialog.MinWidth">
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>

在 Activity.java 中

public void showDatePickerDialog(View v) {
        DialogFragment newFragment = new Login.DatePickerFragment();
        newFragment.show(getSupportFragmentManager(), "datePicker");
    }

    public static class DatePickerFragment extends DialogFragment
            implements DatePickerDialog.OnDateSetListener {

        @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return new DatePickerDialog(getActivity(), R.style.DatePickerTheme, this, 1995, 0, 1);
        }

        public void onDateSet(DatePicker view, int year, int month, int day){                
                    dateSelected = year+"-"+month+"-"+day;

        }
    }

问题是我得到了一个我不想要的背景图块。

但我想要

【问题讨论】:

  • 移除样式 xml 中的父属性。您还在使用 v7 DialogFragment 吗?
  • 我删除了它并在整个页面上获取日历视图。我正在使用“support-fragment-24.2.1] android.support.v4.app public class DialogFragment extends Fragment implements OnCancelListener, OnDismissListener”

标签: android android-styles android-datepicker


【解决方案1】:

这一行可以提供帮助:

datePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

【讨论】:

    【解决方案2】:

    我刚刚用 kotlin 解决了上述问题。对于样式 AlertDialog.THEME_HOLO_DARK 也已弃用,而是在代码下方。

    val c = Calendar.getInstance()
        val year = c.get(Calendar.YEAR)
        val month = c.get(Calendar.MONTH)
        val day = c.get(Calendar.DAY_OF_MONTH)
    
        val dpd = DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_MinWidth,
                DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
            var calendar = GregorianCalendar(year,monthOfYear,dayOfMonth)
            setDate(calendar)
    
        }, year, month, day)
        dpd.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
        dpd.show()
    

    【讨论】:

    • Theme_Holo_Dialog_MinWidth 显示已弃用。如何解决?
    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2022-01-18
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多