更新: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);
}
}