Search in sources :

Example 26 with SpannedString

use of android.text.SpannedString in project MVPArms by JessYanCoding.

the class UiUtils method setViewHintSize.

/**
     * 设置hint大小
     *
     * @param size
     * @param v
     * @param res
     */
public static void setViewHintSize(int size, TextView v, int res) {
    SpannableString ss = new SpannableString(getResources().getString(res));
    // 新建一个属性对象,设置文字的大小
    AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
    // 附加属性到文本  
    ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    // 设置hint  
    // 一定要进行转换,否则属性会消失
    v.setHint(new SpannedString(ss));
}
Also used : SpannableString(android.text.SpannableString) SpannedString(android.text.SpannedString) AbsoluteSizeSpan(android.text.style.AbsoluteSizeSpan)

Example 27 with SpannedString

use of android.text.SpannedString in project android_frameworks_base by ParanoidAndroid.

the class DateFormat method format.

/**
     * Given a format string and a {@link java.util.Calendar} object, returns a CharSequence
     * containing the requested date.
     * @param inFormat the format string, as described in {@link android.text.format.DateFormat}
     * @param inDate the date to format
     * @return a {@link CharSequence} containing the requested text
     */
public static CharSequence format(CharSequence inFormat, Calendar inDate) {
    SpannableStringBuilder s = new SpannableStringBuilder(inFormat);
    int count;
    LocaleData localeData = LocaleData.get(Locale.getDefault());
    int len = inFormat.length();
    for (int i = 0; i < len; i += count) {
        count = 1;
        int c = s.charAt(i);
        if (c == QUOTE) {
            count = appendQuotedText(s, i, len);
            len = s.length();
            continue;
        }
        while ((i + count < len) && (s.charAt(i + count) == c)) {
            count++;
        }
        String replacement;
        switch(c) {
            case 'A':
            case 'a':
                replacement = localeData.amPm[inDate.get(Calendar.AM_PM) - Calendar.AM];
                break;
            case 'd':
                replacement = zeroPad(inDate.get(Calendar.DATE), count);
                break;
            case 'c':
            case 'E':
                replacement = getDayOfWeekString(localeData, inDate.get(Calendar.DAY_OF_WEEK), count, c);
                break;
            // hour in am/pm (0-11)
            case 'K':
            case // hour in am/pm (1-12)
            'h':
                {
                    int hour = inDate.get(Calendar.HOUR);
                    if (c == 'h' && hour == 0) {
                        hour = 12;
                    }
                    replacement = zeroPad(hour, count);
                }
                break;
            // hour in day (0-23)
            case 'H':
            case // hour in day (1-24) [but see note below]
            'k':
                {
                    int hour = inDate.get(Calendar.HOUR_OF_DAY);
                    // times are abusing 'k'. http://b/8359981.
                    if (false && c == 'k' && hour == 0) {
                        hour = 24;
                    }
                    replacement = zeroPad(hour, count);
                }
                break;
            case 'L':
            case 'M':
                replacement = getMonthString(localeData, inDate.get(Calendar.MONTH), count, c);
                break;
            case 'm':
                replacement = zeroPad(inDate.get(Calendar.MINUTE), count);
                break;
            case 's':
                replacement = zeroPad(inDate.get(Calendar.SECOND), count);
                break;
            case 'y':
                replacement = getYearString(inDate.get(Calendar.YEAR), count);
                break;
            case 'z':
                replacement = getTimeZoneString(inDate, count);
                break;
            default:
                replacement = null;
                break;
        }
        if (replacement != null) {
            s.replace(i, i + count, replacement);
            // CARE: count is used in the for loop above
            count = replacement.length();
            len = s.length();
        }
    }
    if (inFormat instanceof Spanned) {
        return new SpannedString(s);
    } else {
        return s.toString();
    }
}
Also used : LocaleData(libcore.icu.LocaleData) SpannedString(android.text.SpannedString) SpannedString(android.text.SpannedString) Spanned(android.text.Spanned) SpannableStringBuilder(android.text.SpannableStringBuilder)

Example 28 with SpannedString

use of android.text.SpannedString in project Anki-Android by Ramblurr.

the class PreviewClass method updateCard.

private void updateCard(String content) {
    if (mCurrentSimpleInterface) {
        fillFlashcard(mShowAnimations);
    } else {
        // Check whether there is a hard coded font-size in the content and apply the relative font size
        // Check needs to be done before CSS is applied to content;
        content = recalculateHardCodedFontSize(content, mDisplayFontSize);
        // Add CSS for font color and font size
        if (mCurrentCard == null) {
            mCard.getSettings().setDefaultFontSize(calculateDynamicFontSize(content));
        }
        String question = "";
        String answer = "";
        // prevent uninitialized variable errors
        int qa = -1;
        if (sDisplayAnswer) {
            qa = MetaDB.LANGUAGES_QA_ANSWER;
            answer = mCurrentCard.getPureAnswerForReading();
            if (!mAnswerSoundsAdded) {
                Sound.addSounds(mBaseUrl, answer, qa);
                mAnswerSoundsAdded = true;
            }
        } else {
            // reset sounds on first side of card
            Sound.resetSounds();
            mAnswerSoundsAdded = false;
            qa = MetaDB.LANGUAGES_QA_QUESTION;
            question = mCurrentCard.getQuestion(mCurrentSimpleInterface);
            Sound.addSounds(mBaseUrl, question, qa);
        }
        content = Sound.expandSounds(mBaseUrl, content, mSpeakText, qa);
        // In order to display the bold style correctly, we have to change
        // font-weight to 700
        content = content.replace("font-weight:600;", "font-weight:700;");
        // Log.i(AnkiDroidApp.TAG, "content card = \n" + content);
        StringBuilder style = new StringBuilder();
        style.append(mCustomFontStyle);
        if (mNightMode) {
            content = HtmlColors.invertColors(content);
        }
        content = SmpToHtmlEntity(content);
        mCardContent = new SpannedString(mCardTemplate.replace("::content::", content).replace("::style::", style.toString()));
        // Log.i(AnkiDroidApp.TAG, "base url = " + mBaseUrl);
        fillFlashcard(mShowAnimations);
    }
}
Also used : SpannedString(android.text.SpannedString) SpannedString(android.text.SpannedString) SpannableString(android.text.SpannableString) SuppressLint(android.annotation.SuppressLint)

Example 29 with SpannedString

use of android.text.SpannedString in project XobotOS by xamarin.

the class DateFormat method format.

/**
     * Given a format string and a {@link java.util.Calendar} object, returns a CharSequence 
     * containing the requested date.
     * @param inFormat the format string, as described in {@link android.text.format.DateFormat}
     * @param inDate the date to format
     * @return a {@link CharSequence} containing the requested text
     */
public static final CharSequence format(CharSequence inFormat, Calendar inDate) {
    SpannableStringBuilder s = new SpannableStringBuilder(inFormat);
    int c;
    int count;
    int len = inFormat.length();
    for (int i = 0; i < len; i += count) {
        int temp;
        count = 1;
        c = s.charAt(i);
        if (c == QUOTE) {
            count = appendQuotedText(s, i, len);
            len = s.length();
            continue;
        }
        while ((i + count < len) && (s.charAt(i + count) == c)) {
            count++;
        }
        String replacement;
        switch(c) {
            case AM_PM:
                replacement = DateUtils.getAMPMString(inDate.get(Calendar.AM_PM));
                break;
            case CAPITAL_AM_PM:
                //FIXME: this is the same as AM_PM? no capital?
                replacement = DateUtils.getAMPMString(inDate.get(Calendar.AM_PM));
                break;
            case DATE:
                replacement = zeroPad(inDate.get(Calendar.DATE), count);
                break;
            case DAY:
                temp = inDate.get(Calendar.DAY_OF_WEEK);
                replacement = DateUtils.getDayOfWeekString(temp, count < 4 ? DateUtils.LENGTH_MEDIUM : DateUtils.LENGTH_LONG);
                break;
            case HOUR:
                temp = inDate.get(Calendar.HOUR);
                if (0 == temp)
                    temp = 12;
                replacement = zeroPad(temp, count);
                break;
            case HOUR_OF_DAY:
                replacement = zeroPad(inDate.get(Calendar.HOUR_OF_DAY), count);
                break;
            case MINUTE:
                replacement = zeroPad(inDate.get(Calendar.MINUTE), count);
                break;
            case MONTH:
                replacement = getMonthString(inDate, count);
                break;
            case SECONDS:
                replacement = zeroPad(inDate.get(Calendar.SECOND), count);
                break;
            case TIME_ZONE:
                replacement = getTimeZoneString(inDate, count);
                break;
            case YEAR:
                replacement = getYearString(inDate, count);
                break;
            default:
                replacement = null;
                break;
        }
        if (replacement != null) {
            s.replace(i, i + count, replacement);
            // CARE: count is used in the for loop above
            count = replacement.length();
            len = s.length();
        }
    }
    if (inFormat instanceof Spanned)
        return new SpannedString(s);
    else
        return s.toString();
}
Also used : SpannedString(android.text.SpannedString) SpannedString(android.text.SpannedString) Spanned(android.text.Spanned) SpannableStringBuilder(android.text.SpannableStringBuilder)

Example 30 with SpannedString

use of android.text.SpannedString in project android_frameworks_base by ResurrectionRemix.

the class DateFormat method format.

/**
     * Given a format string and a {@link java.util.Calendar} object, returns a CharSequence
     * containing the requested date.
     * @param inFormat the format string, as described in {@link android.text.format.DateFormat}
     * @param inDate the date to format
     * @return a {@link CharSequence} containing the requested text
     */
public static CharSequence format(CharSequence inFormat, Calendar inDate) {
    SpannableStringBuilder s = new SpannableStringBuilder(inFormat);
    int count;
    LocaleData localeData = LocaleData.get(Locale.getDefault());
    int len = inFormat.length();
    for (int i = 0; i < len; i += count) {
        count = 1;
        int c = s.charAt(i);
        if (c == QUOTE) {
            count = appendQuotedText(s, i, len);
            len = s.length();
            continue;
        }
        while ((i + count < len) && (s.charAt(i + count) == c)) {
            count++;
        }
        String replacement;
        switch(c) {
            case 'A':
            case 'a':
                replacement = localeData.amPm[inDate.get(Calendar.AM_PM) - Calendar.AM];
                break;
            case 'd':
                replacement = zeroPad(inDate.get(Calendar.DATE), count);
                break;
            case 'c':
            case 'E':
                replacement = getDayOfWeekString(localeData, inDate.get(Calendar.DAY_OF_WEEK), count, c);
                break;
            // hour in am/pm (0-11)
            case 'K':
            case // hour in am/pm (1-12)
            'h':
                {
                    int hour = inDate.get(Calendar.HOUR);
                    if (c == 'h' && hour == 0) {
                        hour = 12;
                    }
                    replacement = zeroPad(hour, count);
                }
                break;
            // hour in day (0-23)
            case 'H':
            case // hour in day (1-24) [but see note below]
            'k':
                {
                    int hour = inDate.get(Calendar.HOUR_OF_DAY);
                    // times are abusing 'k'. http://b/8359981.
                    if (false && c == 'k' && hour == 0) {
                        hour = 24;
                    }
                    replacement = zeroPad(hour, count);
                }
                break;
            case 'L':
            case 'M':
                replacement = getMonthString(localeData, inDate.get(Calendar.MONTH), count, c);
                break;
            case 'm':
                replacement = zeroPad(inDate.get(Calendar.MINUTE), count);
                break;
            case 's':
                replacement = zeroPad(inDate.get(Calendar.SECOND), count);
                break;
            case 'y':
                replacement = getYearString(inDate.get(Calendar.YEAR), count);
                break;
            case 'z':
                replacement = getTimeZoneString(inDate, count);
                break;
            default:
                replacement = null;
                break;
        }
        if (replacement != null) {
            s.replace(i, i + count, replacement);
            // CARE: count is used in the for loop above
            count = replacement.length();
            len = s.length();
        }
    }
    if (inFormat instanceof Spanned) {
        return new SpannedString(s);
    } else {
        return s.toString();
    }
}
Also used : LocaleData(libcore.icu.LocaleData) SpannedString(android.text.SpannedString) SpannedString(android.text.SpannedString) Spanned(android.text.Spanned) SpannableStringBuilder(android.text.SpannableStringBuilder)

Aggregations

SpannedString (android.text.SpannedString)41 Test (org.junit.Test)15 Spanned (android.text.Spanned)12 Subtitle (com.google.android.exoplayer2.text.Subtitle)12 SpannableStringBuilder (android.text.SpannableStringBuilder)10 SpannableString (android.text.SpannableString)9 LocaleData (libcore.icu.LocaleData)6 AbsoluteSizeSpan (android.text.style.AbsoluteSizeSpan)4 TextPaint (android.text.TextPaint)2 ForegroundColorSpan (android.text.style.ForegroundColorSpan)2 ArrayList (java.util.ArrayList)2 SuppressLint (android.annotation.SuppressLint)1 NotificationChannel (android.app.NotificationChannel)1 ConversationChannel (android.app.people.ConversationChannel)1 ShortcutInfo (android.content.pm.ShortcutInfo)1 NonNull (android.support.annotation.NonNull)1 Spannable (android.text.Spannable)1 StaticLayout (android.text.StaticLayout)1 ImageSpan (android.text.style.ImageSpan)1 Pair (android.util.Pair)1