2015-08-25 4 views
0

Я использую виджет textClock в своем макете приложения. Я должен поддерживать разные языки и добавить dateformat должен быть полной датой, например «EEEE, dd MMMM yyyy HH: mm: ss a». Проблема заключается в том, что имя days и Months всегда совпадает с языковым стандартом по умолчанию. Когда я меняю языковой стандарт, он не изменяется.Обновление Textclock при смене локали

Любое предложение? Не следует ли это обрабатывать автоматически?

ответ

1

Он wont't работать с виджетом по умолчанию. Поэтому я использовал свой собственный класс и его работу, как ожидалось. Вам просто нужно обязательно изменить свой язык.

public class MyTextClock extends android.widget.TextClock { 


    public MyTextClock(Context context) { 
     super(context); 
     setLocaleDateFormat(); 
    } 

    public MyTextClock(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setLocaleDateFormat(); 
    } 

    public MyTextClock(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     setLocaleDateFormat(); 
    } 

    private void setLocaleDateFormat() 
    { 
     Locale currentLocale = getResources().getConfiguration().locale; 
     Calendar cal = GregorianCalendar.getInstance(TimeZone.getDefault(), currentLocale); 

     String dayName = cal.getDisplayName(cal.DAY_OF_WEEK, Calendar.LONG, currentLocale); 
     String monthName =cal.getDisplayName(cal.MONTH, Calendar.LONG, currentLocale); 

     this.setFormat12Hour("'"+dayName+"' '"+monthName+"' dd, yyyy h:m:ss a"); 
     this.setFormat24Hour("'"+dayName+"', dd '"+monthName+"' yyyy HH:mm:ss"); 
    } 
} 
1

Попробуйте это с помощью public void setTextLocale (Locale locale):

Resources res = context.getResources(); 
// Change locale settings in the app. 
DisplayMetrics dm = res.getDisplayMetrics(); 
android.content.res.Configuration conf = res.getConfiguration(); 
conf.locale = new Locale(language_code.toLowerCase()); 
yourTextClock.setTextLocale(conf.locale); 
res.updateConfiguration(conf, dm); 
+0

К сожалению, он не работает. Некоторые, как это работает, частично. Я использую на португальском языке, когда я меняю язык на английский, он меняет формат на английский формат 12Hour, но дни и имена сохраняются на португальском языке. Это странно ..: S – MRodrigues

+0

Я обновил решение с помощью некоторого кода, который должен работать. Попытайтесь сказать мне, если это полезно, пожалуйста, – arodriguezdonaire

+0

Спасибо Андреу, но я получил тот же результат. Он изменяет формат даты, но имена дней и месяцев остаются в локали планшета. – MRodrigues

Смежные вопросы