Android 以编程方式设置小部件中TextClock的日期格式

Android 以编程方式设置小部件中TextClock的日期格式,android,android-widget,widget,date-format,remoteview,Android,Android Widget,Widget,Date Format,Remoteview,我必须设置一个TextClock以在另一个TextClock中显示时间和日期。我希望能够使用户更改日期的格式。例如,他们想要的不是dd-MMMM-yyyyy:MMMM-dd-yyyy,它将显示2013年1月1日 我已经设置了一个微调器和数组来在配置活动中选择它,但我想知道如何将TextClock格式更改为我提到的格式。我尝试了views.set.。。。但是什么也没找到 当然,一定有办法改变xml文件中的格式 android:format12Hour="dd MMMM yyyy" android:

我必须设置一个
TextClock
以在另一个
TextClock
中显示时间和日期。我希望能够使用户更改日期的格式。例如,他们想要的不是
dd-MMMM-yyyyy
MMMM-dd-yyyy
,它将显示2013年1月1日

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

当然,一定有办法改变xml文件中的格式

android:format12Hour="dd MMMM yyyy"
android:format24Hour="dd MMMM yyyy"
在java文件中..

是的,对于TextClock实例有一个方法和24小时。 字符序列与您提到的相同。

更新:2018年1月31日: 有一种通过调用setCharSequence设置24小时表单的更简单方法,如stackoverflow问题接受答案所示:

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

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

下面是一个示例,您可以将其放入onUpdate():

@覆盖
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
RemoteViews=null;
int-layoutID=0;
if(二十四小时){
layoutID=R.layout.widget_clock_,带24小时;
}否则{
layoutID=R.layout.widget_clock_,带12小时;
}
//在的构造函数中传递的layoutID
//RemoteView对象是将要加载的布局
//当小部件更新时。
视图=新的远程视图(context.getPackageName(),layoutID);
for(int i=0;i
这就是您需要做的:

remoteView.setCharSequence(R.id.widget_current_date, "setFormat12Hour", datePattern);

是的,我可以在常规活动中使用它,但是在小部件中是否有其他选择?这将不起作用,因为必须使用RemoteView。因此,我们需要一个RemoteView方法来实现这一点。我也有同样的问题。为什么说“类不公开set24hourformat方法”?信息技术does@2cupoftechTextClock公开set24hourformat()的方法。但RemoteView没有。在android widgets中,您必须通过RemoteView查看下面的我的答案我提供的答案非常有效,请将其标记为正确答案我尝试一下您的上述代码仍然无法工作textclock仅显示24小时格式。如何将datepattern转换为charseq,如“dd-MMM-yyyy-hh:mm a”
remoteView.setCharSequence(R.id.widget_current_date, "setFormat12Hour", datePattern);