是否可以更改xml中TextClock视图显示的语言

时间:2017-06-13 12:00:15

标签: android xml android-layout

我正在使用TextClock来显示哪一天和哪个日期。

是否可以更改TextClock的默认语言(英语)?

        <TextClock
            android:id="@+id/date"
            style="@style/DateStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:format12Hour="EEEE\n MMMM d"
            android:format24Hour="EEEEd\n MMMM"/>

显示:

Display

1 个答案:

答案 0 :(得分:3)

您可以编写自定义TextClock并在其中设置Locale来执行此操作。试试这个:

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() {
        // You can change language from here
        Locale currentLocale = new Locale("en");
        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 + "'\n'" + monthName + "' dd");
        this.setFormat24Hour("'" + dayName + "'\n'" + monthName + "' dd");
    }
}

将此自定义TextClock实现为您的布局:

<com.your.package.MyTextClock
    android:id="@+id/date"
    style="@style/DateStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"/>

你走了。祝你好运。