2

我必须设置一个TextClock来显示时间和另一个日期TextClock。我希望能够让用户更改日期的格式。例如。而不是dd MMMM yyyy他们想要的:MMMM dd yyyy这将显示 2013 年 1 月 1 日。

我已经设置了一个微调器和数组以在配置活动中选择它,但想知道如何将TextClock格式更改为我提到的。我试过views.set.了……但什么也没找到。

当然必须有一种方法可以像我在 xml 文件中那样更改格式

android:format12Hour="dd MMMM yyyy"
android:format24Hour="dd MMMM yyyy"

在java文件中..

4

3 回答 3

1

更新:2018 年 1 月 31 日:有一种更简单的方法可以通过调用 setCharSequence 来设置 24 小时形式,此 stackoverflow 问题已接受答案: Can't call setFormat24Hour of a TextClock in a Widget

旧的替代答案:由于小部件视图是通过 RemoteViews android 类以编程方式访问的,并且该类不公开 set24hourformat 方法,因此您必须通过创建两个 XML 布局来解决该问题(每种格式一个用于您想要切换的格式)然后使用 RemoteViews 构造函数设置 XML 布局。

有点痛苦,但这是当前 SDK API 的唯一方法。

这是您将放入 onUpdate() 的示例:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
    RemoteViews views = null;
    int layoutID = 0;
    if (TwentyFourHourOn){
        layoutID = R.layout.widget_clock_with_24hour;
    } else {
        layoutID = R.layout.widget_clock_with_12hour;
    }

    // the layoutID that is passed in the constructor of the
    //   RemoteViews object is the layout that will be loaded
    //   when the widget is updated.
    views = new RemoteViews(context.getPackageName(), layoutID);

    for (int i = 0; i < appWidgetIds.length; i++) {
        appWidgetManager.updateAppWidget(appWidgetIds[i], views);
    }
}
于 2017-10-11T22:08:10.583 回答
1

这就是你需要做的:

remoteView.setCharSequence(R.id.widget_current_date, "setFormat12Hour", datePattern);
于 2018-01-26T17:39:40.140 回答
0

是的,TextClock 实例有一个setFormat12Hour(CharSequence)方法和 24Hour。char 序列就像您提到的那样。

于 2013-08-23T18:22:31.260 回答