2013-08-23 50 views
2

我必須設置TextClock以顯示另一個TextClock中的時間和日期。我希望能夠讓用戶更改日期的格式。例如。而不是dd MMMM yyyy他們想:MMMM dd yyyy這將顯示1月1日2013年以編程方式設置Widget中TextClock的日期格式

我已經設置了微調和陣列的配置活動選擇這一點,但想知道如何TextClock格式更改爲我所提到的。我嘗試過views.set. ...但沒有找到任何東西。

當然必須有改變格式的方式就像我在XML文件

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

..

+0

我提供的答案完美,請將其標記爲正確答案 – 2cupsOfTech

回答

0

是的,有一個TextClock實例setFormat12Hour(CharSequence)方法和24小時。 字符序列就像你提到的那個。

+0

是的我可以在常規活動中使用它,但是在widget中有沒有其他選擇? – Timmo

+0

這將不起作用,因爲必須使用RemoteView。所以,我們需要一個RemoteView方法來實現這一點。我有同樣的問題。 –

0

更新:2018年1月31日: 有通過電話設置24小時形式在這個計算器問題,接受的答案所示setCharSequence一個更簡單的方法: Can't call setFormat24Hour of a TextClock in a Widget

老備選答案: 由於小部件視圖中編程訪問通過RemoteViews android類,並且該類不公開set24hourformat方法,則必須通過創建兩個XML佈局(每個格式要針對每種格式之一進行切換)來解決該問題,然後使用RemoteViews構造函數設置XML佈局。

有點痛苦,但只有當前的SDK API的方式。

這裏有一個例子,你會放的onUpdate():

@覆蓋 公共無效的onUpdate(上下文的背景下,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); 

} 
+0

爲什麼你說'班不暴露set24hourformat方法'?它確實 – 2cupsOfTech

+0

@ 2cupoftech TextClock公開了set24hourformat()的方法。但RemoteView不。在Android小部件中,你必須通過RemoteView – DEzra

+0

去看看我的答案 – 2cupsOfTech

0

這就是你需要什麼要做的事:

remoteView.setCharSequence(R.id.widget_current_date, "setFormat12Hour", datePattern); 
相關問題