2013-08-23 4 views
2

Мне нужно установить TextClock, чтобы показать время, а также дату в другом TextClock. Я хочу, чтобы пользователь мог изменить формат даты. Например. вместо dd MMMM yyyy они хотят: MMMM dd yyyy, который будет показывать 1 января 2013 г.Установить формат даты TextClock в виджетах Программно

Я создал кок и массив, чтобы выбрать это в конфиге активности, но хочу знать, как изменить формат TextClock как я уже упоминал. Я пробовал views.set. ... но ничего не нашел.

Наверняка должен быть способ, чтобы изменить формат, как я в XML-файле

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

в файле Java ..

+0

Ответ, который я предоставил, отлично работает, пожалуйста, отметьте его как правильный ответ – 2cupsOfTech

ответ

0

Да есть setFormat12Hour(CharSequence) метод и 24Hour для экземпляра TextClock , Последовательность символов подобна той, которую вы упоминаете.

+0

Да, я могу использовать это на обычной деятельности , но есть ли альтернатива в виджетах? – Timmo

+0

Это не сработает, потому что необходимо использовать RemoteView. Итак, нам нужен метод RemoteView, чтобы сделать это возможным. У меня та же проблема. –

0

обновление: 31 января 2018: Существует простой способ настройки 24hour формы с помощью вызова setCharSequence показано на этой StackOverflow вопросы принято отвечать: Can't call setFormat24Hour of a TextClock in a Widget

Старый альтернативный ответ: Как виджеты просмотреть доступны программно через класс andView RemoteViews, и этот класс не раскрывает метод set24hourformat, вам придется обойти эту проблему, создав два XML-макета (по одному для каждого формата, который вы хотите переключить), а затем установите XML-макет с помощью конструктора RemoteViews.

Немного боли, но только путь с текущими API-интерфейсами SDK.

Вот пример, который Вы поместили бы в OnUpdate():

@Override общественного недействительными OnUpdate (контекст Контекст, AppWidgetManager appWidgetManager, ИНТ [] 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);