【问题标题】:DatePicker and TimePicker on DialogPreferenceDialogPreference 上的 DatePicker 和 TimePicker
【发布时间】:2014-09-13 23:24:56
【问题描述】:

我有一个 PreferenceFragment,它通过调用 addPreferencesFromResource(R.xml.preferences_main); 来加载首选项;

在preferences_main.xml 文件中,我有一个名为TimePreference 的自定义首选项,它扩展了DialogPreference。 TimePreference 只包含一个 TimePicker(也尝试过 DatePicker)。显示时,TimePicker 现在是不同的格式。它不是一个微调器,而是带有 EditText 视图和上/下箭头的版本。真正的问题是那些箭头是白色的,文本是白色的,都在一个白色的背景对话框上。

如果我将 TimePicker 放在一个活动上,它就是主题微调器样式。

我不知道为什么这只发生在 DialogPreference 上而不是 Activity 上。就像它失去了所有样式一样。

我的基本主题是 Theme.AppCompat.Light,我尝试了其他几个主题,结果相同。

编辑:我的 minSdkVersion 是 11,目标是 19

有人有什么想法吗?

public class TestPreference extends DialogPreference {

Button btn;
TimePicker tp;

public TestPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

@Override
protected View onCreateDialogView() {
    tp = new TimePicker(getContext().getApplicationContext());
    return tp;
}

}

【问题讨论】:

    标签: android datepicker android-preferences android-theme timepicker


    【解决方案1】:

    您正在使用的应用程序上下文不包含有关为您的应用程序选择的主题/样式的任何信息。

    尝试如下更改TimePicker的初始化,看看是否有效:

    tp = new TimePicker(getContext());
    

    此外,在创建TestPreference 的实例时,请在其构造函数中传递活动的引用,例如:YourActivity.this

    【讨论】:

    • 我只是在 Eclipse 崩溃之前尝试这样做,它似乎正在工作。稍后我会告诉你更多信息。
    • TestPreference 也是从首选项 xml 创建的,那么如何将我的活动引用传递给它?
    • 啊,那就按照我说的来初始化 TimePicker。
    • waqaslam,这就是解决方案......风格仍然与规范不同,这是因为 values-14 中的风格不同。我改变了这种风格并得到了预期的布局。通过删除 .getApplicationContext() 解决了字体和箭头为白色的问题。谢谢!
    • 非常感谢!你是救生员。 @waqaslam 你觉得你能帮我吗goo.gl/MAjgTh
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多