Java Code Examples for android.text.SpannableStringBuilder#append()
The following examples show how to use
android.text.SpannableStringBuilder#append() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AnswerTextBuilder.java From 365browser with Apache License 2.0 | 6 votes |
/** * Builds a Spannable containing all of the styled text in the supplied ImageLine. * * @param line All text fields within this line will be added to the returned Spannable. * types. * @param metrics Font metrics which will be used to properly size and layout images and top- * aligned text. * @param density Screen density which will be used to properly size and layout images and top- * aligned text. */ static Spannable buildSpannable( SuggestionAnswer.ImageLine line, Paint.FontMetrics metrics, float density) { SpannableStringBuilder builder = new SpannableStringBuilder(); // Determine the height of the largest text element in the line. This // will be used to top-align text and scale images. int maxTextHeightSp = getMaxTextHeightSp(line); List<SuggestionAnswer.TextField> textFields = line.getTextFields(); for (int i = 0; i < textFields.size(); i++) { appendAndStyleText(builder, textFields.get(i), maxTextHeightSp, metrics, density); } if (line.hasAdditionalText()) { builder.append(" "); SuggestionAnswer.TextField additionalText = line.getAdditionalText(); appendAndStyleText(builder, additionalText, maxTextHeightSp, metrics, density); } if (line.hasStatusText()) { builder.append(" "); SuggestionAnswer.TextField statusText = line.getStatusText(); appendAndStyleText(builder, statusText, maxTextHeightSp, metrics, density); } return builder; }
Example 2
Source File: ImageClassifierTF.java From AIIA-DNN-benchmark with Apache License 2.0 | 6 votes |
/** Classifies a frame from the preview stream. */ void classifyFrame(Bitmap bitmap, SpannableStringBuilder builder) { if (tflite == null) { Log.e(TAG, "Image classifier has not been initialized; Skipped."); builder.append(new SpannableString("Uninitialized Classifier.")); } convertBitmapToByteBuffer(bitmap); // Here's where the magic happens!!! long startTime = SystemClock.uptimeMillis(); runInference(); long endTime = SystemClock.uptimeMillis(); Log.d(TAG, "Timecost to run model inference: " + Long.toString(endTime - startTime)); // Smooth the results across frames. applyFilter(); // Print the results. printTopKLabels(builder); long duration = endTime - startTime; SpannableString span = new SpannableString(duration + " ms"); span.setSpan(new ForegroundColorSpan(android.graphics.Color.LTGRAY), 0, span.length(), 0); builder.append(span); }
Example 3
Source File: ChatEntry.java From AndFChat with GNU General Public License v3.0 | 6 votes |
public Spannable getChatMessage(Context context) { if (spannedText == null) { Spannable dateSpan = createDateSpannable(context); Spannable textSpan = createText(context); // Time SpannableStringBuilder finishedText = new SpannableStringBuilder(dateSpan); // Delimiter finishedText.append(delimiterBetweenDateAndName); // Name finishedText.append(new NameSpannable(owner, getNameColorId(), context.getResources())); // Delimiter finishedText.append(delimiterBetweenNameAndText); // Message finishedText.append(textSpan); // Add overall styles if (getTypeFace() != null) { finishedText.setSpan(new StyleSpan(getTypeFace()), DATE_CHAR_LENGTH, finishedText.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } spannedText = finishedText; } return spannedText; }
Example 4
Source File: InfoBarLayout.java From AndroidChromium with Apache License 2.0 | 6 votes |
/** * Prepares text to be displayed as the infobar's main message, including setting up a * clickable link if the infobar requires it. */ private CharSequence prepareMainMessageString() { SpannableStringBuilder fullString = new SpannableStringBuilder(); if (mMessageMainText != null) fullString.append(mMessageMainText); // Concatenate the text to display for the link and make it clickable. if (!TextUtils.isEmpty(mMessageLinkText)) { if (fullString.length() > 0) fullString.append(" "); int spanStart = fullString.length(); fullString.append(mMessageLinkText); fullString.setSpan(new ClickableSpan() { @Override public void onClick(View view) { mInfoBarView.onLinkClicked(); } }, spanStart, fullString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return fullString; }
Example 5
Source File: ReadMoreTextView.java From FastTextView with Apache License 2.0 | 6 votes |
@NonNull @Override protected StaticLayout makeLayout(CharSequence text, int maxWidth, boolean exactly) { mWithEllipsisLayout = super.makeLayout(text, maxWidth, exactly); SpannableStringBuilder textWithExtraEnd = new SpannableStringBuilder(text); textWithExtraEnd.append(COLLAPSE_NORMAL); if (mCollapseSpan != null) { textWithExtraEnd.setSpan(mCollapseSpan, textWithExtraEnd.length() - 1, textWithExtraEnd.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } StaticLayoutBuilderCompat layoutBuilder = createAllStaticLayoutBuilder(textWithExtraEnd, 0, textWithExtraEnd.length(), getPaint(), maxWidth > 0 ? Math.min(maxWidth, mWithEllipsisLayout.getWidth()) : mWithEllipsisLayout.getWidth()); layoutBuilder.setLineSpacing(mAttrsHelper.mSpacingAdd, mAttrsHelper.mSpacingMultiplier) .setAlignment(TextViewAttrsHelper.getLayoutAlignment(this, getGravity())) .setIncludePad(true); beforeAllStaticLayoutBuild(layoutBuilder); mAllTextLayout = layoutBuilder.build(); return mWithEllipsisLayout; }
Example 6
Source File: EditTextUtil.java From RxAndroidBootstrap with Apache License 2.0 | 6 votes |
/** * Sets the edittext's hint icon and text. * * @param editText * @param drawableResource * @param hintText */ public static void setSearchHintWithColorIcon(EditText editText, int drawableResource, int textColor, String hintText) { try { SpannableStringBuilder stopHint = new SpannableStringBuilder(" "); stopHint.append(hintText); // Add the icon as an spannable Drawable searchIcon = editText.getContext().getResources().getDrawable(drawableResource); Float rawTextSize = editText.getTextSize(); int textSize = (int) (rawTextSize * 1.25); searchIcon.setBounds(0, 0, textSize, textSize); stopHint.setSpan(new ImageSpan(searchIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Set the new hint text editText.setHint(stopHint); //searchBox.setTextColor(Color.WHITE); editText.setHintTextColor(textColor); } catch (Exception e) { Log.e("EditTextUtil", e.getMessage(), e); } }
Example 7
Source File: AppUtil.java From droidkaigi2016 with Apache License 2.0 | 6 votes |
public static void linkify(Activity activity, TextView textView, String linkText, String url) { String text = textView.getText().toString(); SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append(text); builder.setSpan( new ClickableSpan() { @Override public void onClick(View view) { showWebPage(activity, url); } }, text.indexOf(linkText), text.indexOf(linkText) + linkText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); textView.setText(builder); textView.setMovementMethod(LinkMovementMethod.getInstance()); }
Example 8
Source File: SearchView.java From android_9.0.0_r45 with Apache License 2.0 | 5 votes |
private CharSequence getDecoratedHint(CharSequence hintText) { // If the field is always expanded or we don't have a search hint icon, // then don't add the search icon to the hint. if (!mIconifiedByDefault || mSearchHintIcon == null) { return hintText; } final int textSize = (int) (mSearchSrcTextView.getTextSize() * 1.25); mSearchHintIcon.setBounds(0, 0, textSize, textSize); final SpannableStringBuilder ssb = new SpannableStringBuilder(" "); ssb.setSpan(new ImageSpan(mSearchHintIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ssb.append(hintText); return ssb; }
Example 9
Source File: GroupCreateActivity.java From Yahala-Messenger with MIT License | 5 votes |
public XImageSpan createAndPutChipForUser(TLRPC.User user) { LayoutInflater lf = (LayoutInflater) parentActivity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); View textView = lf.inflate(R.layout.group_create_bubble, null); TextView text = (TextView) textView.findViewById(R.id.bubble_text_view); String name = Utilities.formatName(user.first_name, user.last_name); if (name.length() == 0 && user.phone != null && user.phone.length() != 0) { name = PhoneFormat.getInstance().format("+" + user.phone); } text.setText(name + ", "); int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); textView.measure(spec, spec); textView.layout(0, 0, textView.getMeasuredWidth(), textView.getMeasuredHeight()); Bitmap b = Bitmap.createBitmap(textView.getWidth(), textView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(b); canvas.translate(-textView.getScrollX(), -textView.getScrollY()); textView.draw(canvas); textView.setDrawingCacheEnabled(true); Bitmap cacheBmp = textView.getDrawingCache(); Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true); textView.destroyDrawingCache(); final BitmapDrawable bmpDrawable = new BitmapDrawable(b); bmpDrawable.setBounds(0, 0, b.getWidth(), b.getHeight()); SpannableStringBuilder ssb = new SpannableStringBuilder(""); XImageSpan span = new XImageSpan(bmpDrawable, ImageSpan.ALIGN_BASELINE); allSpans.add(span); selectedContacts.put(user.jid, span); for (ImageSpan sp : allSpans) { ssb.append("<<"); ssb.setSpan(sp, ssb.length() - 2, ssb.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE); } userSelectEditText.setText(ssb); userSelectEditText.setSelection(ssb.length()); return span; }
Example 10
Source File: PopulateSubmissionViewHolder.java From Slide with GNU General Public License v3.0 | 5 votes |
public void doText(SubmissionViewHolder holder, Submission submission, Context mContext, String baseSub, boolean full) { SpannableStringBuilder t = SubmissionCache.getTitleLine(submission, mContext); SpannableStringBuilder l = SubmissionCache.getInfoLine(submission, mContext, baseSub); SpannableStringBuilder c = SubmissionCache.getCrosspostLine(submission, mContext); int[] textSizeAttr = new int[]{R.attr.font_cardtitle, R.attr.font_cardinfo}; TypedArray a = mContext.obtainStyledAttributes(textSizeAttr); int textSizeT = a.getDimensionPixelSize(0, 18); int textSizeI = a.getDimensionPixelSize(1, 14); t.setSpan(new AbsoluteSizeSpan(textSizeT), 0, t.length(), 0); l.setSpan(new AbsoluteSizeSpan(textSizeI), 0, l.length(), 0); SpannableStringBuilder s = new SpannableStringBuilder(); if (SettingValues.titleTop) { s.append(t); s.append("\n"); s.append(l); } else { s.append(l); s.append("\n"); s.append(t); } if(!full && c != null){ c.setSpan(new AbsoluteSizeSpan(textSizeI), 0, c.length(), 0); s.append("\n"); s.append(c); } a.recycle(); holder.title.setText(s); }
Example 11
Source File: SearchViewUtil.java From RxAndroidBootstrap with Apache License 2.0 | 5 votes |
/** * Sets the searchview's hint icon and text. * * @param searchView * @param drawableResource * @param hintText */ public static void setSearchHintIcon(SearchView searchView, int drawableResource, String hintText) { try { // Accessing the SearchAutoComplete int queryTextViewId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); View autoComplete = searchView.findViewById(queryTextViewId); //Class<?> clazz = Class.forName("android.widget.SearchView$SearchAutoComplete"); TextView searchBox = (TextView) searchView.findViewById(R.id.search_src_text); SpannableStringBuilder stopHint = new SpannableStringBuilder(" "); stopHint.append(hintText); // Add the icon as an spannable Drawable searchIcon = searchView.getContext().getResources().getDrawable(drawableResource); Float rawTextSize = searchBox.getTextSize(); int textSize = (int) (rawTextSize * 1.25); searchIcon.setBounds(0, 0, textSize, textSize); stopHint.setSpan(new ImageSpan(searchIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Set the new hint text searchBox.setHint(stopHint); //searchBox.setTextColor(Color.WHITE); searchBox.setHintTextColor(Color.LTGRAY); } catch (Exception e) { Log.e("SearchView", e.getMessage(), e); } }
Example 12
Source File: GalleryListScene.java From EhViewer with Apache License 2.0 | 5 votes |
private void setSearchBarHint(Context context, SearchBar searchBar) { Resources resources = context.getResources(); Drawable searchImage = DrawableManager.getVectorDrawable(context, R.drawable.v_magnify_x24); SpannableStringBuilder ssb = new SpannableStringBuilder(" "); ssb.append(resources.getString(EhUrl.SITE_EX == Settings.getGallerySite() ? R.string.gallery_list_search_bar_hint_exhentai : R.string.gallery_list_search_bar_hint_e_hentai)); int textSize = (int) (searchBar.getEditTextTextSize() * 1.25); if (searchImage != null) { searchImage.setBounds(0, 0, textSize, textSize); ssb.setSpan(new ImageSpan(searchImage), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } searchBar.setEditTextHint(ssb); }
Example 13
Source File: BindingAdapters.java From lttrs-android with Apache License 2.0 | 5 votes |
@BindingAdapter("android:text") public static void setText(TextView text, SubjectWithImportance subjectWithImportance) { if (subjectWithImportance == null || subjectWithImportance.subject == null) { text.setText(null); return; } if (subjectWithImportance.important) { SpannableStringBuilder header = new SpannableStringBuilder(subjectWithImportance.subject); header.append("\u2004\u00bb"); // 1/3 em - 1/2 em would be 2002 header.setSpan(new ImageSpan(text.getContext(), R.drawable.ic_important_amber_22sp, DynamicDrawableSpan.ALIGN_BASELINE), header.length() - 1, header.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); text.setText(header); } else { text.setText(subjectWithImportance.subject); } }
Example 14
Source File: HrHandler.java From mvvm-template with GNU General Public License v3.0 | 5 votes |
@Override public void handleTagNode(TagNode tagNode, SpannableStringBuilder spannableStringBuilder, int i, int i1) { spannableStringBuilder.append("\n"); SpannableStringBuilder builder = new SpannableStringBuilder("$"); HrSpan hrSpan = new HrSpan(color, width); builder.setSpan(hrSpan, 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new CenterSpan(), 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.append("\n"); spannableStringBuilder.append(builder); }
Example 15
Source File: StreamingTextView.java From adt-leanback-support with Apache License 2.0 | 5 votes |
public void updateRecognizedText(String stableText, String pendingText) { if (DEBUG) Log.d(TAG, "updateText(" + stableText + "," + pendingText + ")"); if (stableText == null) { stableText = ""; } SpannableStringBuilder displayText = new SpannableStringBuilder(stableText); if (DOTS_FOR_STABLE) { addDottySpans(displayText, stableText, 0); } if (pendingText != null) { int pendingTextStart = displayText.length(); displayText.append(pendingText); if (DOTS_FOR_PENDING) { addDottySpans(displayText, pendingText, pendingTextStart); } else { int pendingColor = getResources().getColor( R.color.lb_search_plate_hint_text_color); addColorSpan(displayText, pendingColor, pendingText, pendingTextStart); } } // Start streaming in dots from beginning of partials, or current position, // whichever is larger mStreamPosition = Math.max(stableText.length(), mStreamPosition); // Copy the text and spans to a SpannedString, since editable text // doesn't redraw in invalidate() when hardware accelerated // if the text or spans havent't changed. (probably a framework bug) updateText(new SpannedString(displayText)); if (ANIMATE_DOTS_FOR_PENDING) { startStreamAnimation(); } }
Example 16
Source File: SpannableFoldTextView.java From FoldText_Java with MIT License | 5 votes |
/** * 增加提示文字 * * @param span * @param type */ private void addTip(SpannableStringBuilder span, BufferType type) { if (!(isExpand && !isShowTipAfterExpand)) { //折叠或者展开并且展开后显示提示 if (mTipGravity == END) { span.append(" "); } else { span.append("\n"); } int length; if (isExpand) { span.append(mExpandText); length = mExpandText.length(); } else { span.append(mFoldText); length = mFoldText.length(); } if (mTipClickable) { span.setSpan(mSpan, span.length() - length, span.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); if (isParentClick) { setMovementMethod(MyLinkMovementMethod.getInstance()); setClickable(false); setFocusable(false); setLongClickable(false); } else { setMovementMethod(LinkMovementMethod.getInstance()); } } span.setSpan(new ForegroundColorSpan(mTipColor), span.length() - length, span.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } super.setText(span, type); }
Example 17
Source File: GalleryListScene.java From EhViewer with Apache License 2.0 | 5 votes |
@Override public CharSequence getText(float textSize) { Drawable bookImage = DrawableManager.getVectorDrawable(getContext2(), R.drawable.v_book_open_x24); SpannableStringBuilder ssb = new SpannableStringBuilder(" "); ssb.append(getResources2().getString(R.string.gallery_list_search_bar_open_gallery)); int imageSize = (int) (textSize * 1.25); if (bookImage != null) { bookImage.setBounds(0, 0, imageSize, imageSize); ssb.setSpan(new ImageSpan(bookImage), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } return ssb; }
Example 18
Source File: Cea608Decoder.java From MediaSDK with Apache License 2.0 | 4 votes |
public Cue build(@Cue.AnchorType int forcedPositionAnchor) { SpannableStringBuilder cueString = new SpannableStringBuilder(); // Add any rolled up captions, separated by new lines. for (int i = 0; i < rolledUpCaptions.size(); i++) { cueString.append(rolledUpCaptions.get(i)); cueString.append('\n'); } // Add the current line. cueString.append(buildCurrentLine()); if (cueString.length() == 0) { // The cue is empty. return null; } int positionAnchor; // The number of empty columns before the start of the text, in the range [0-31]. int startPadding = indent + tabOffset; // The number of empty columns after the end of the text, in the same range. int endPadding = SCREEN_CHARWIDTH - startPadding - cueString.length(); int startEndPaddingDelta = startPadding - endPadding; if (forcedPositionAnchor != Cue.TYPE_UNSET) { positionAnchor = forcedPositionAnchor; } else if (captionMode == CC_MODE_POP_ON && (Math.abs(startEndPaddingDelta) < 3 || endPadding < 0)) { // Treat approximately centered pop-on captions as middle aligned. We also treat captions // that are wider than they should be in this way. See // https://github.com/google/ExoPlayer/issues/3534. positionAnchor = Cue.ANCHOR_TYPE_MIDDLE; } else if (captionMode == CC_MODE_POP_ON && startEndPaddingDelta > 0) { // Treat pop-on captions with less padding at the end than the start as end aligned. positionAnchor = Cue.ANCHOR_TYPE_END; } else { // For all other cases assume start aligned. positionAnchor = Cue.ANCHOR_TYPE_START; } float position; switch (positionAnchor) { case Cue.ANCHOR_TYPE_MIDDLE: position = 0.5f; break; case Cue.ANCHOR_TYPE_END: position = (float) (SCREEN_CHARWIDTH - endPadding) / SCREEN_CHARWIDTH; // Adjust the position to fit within the safe area. position = position * 0.8f + 0.1f; break; case Cue.ANCHOR_TYPE_START: default: position = (float) startPadding / SCREEN_CHARWIDTH; // Adjust the position to fit within the safe area. position = position * 0.8f + 0.1f; break; } int lineAnchor; int line; // Note: Row indices are in the range [1-15]. if (captionMode == CC_MODE_ROLL_UP || row > (BASE_ROW / 2)) { lineAnchor = Cue.ANCHOR_TYPE_END; line = row - BASE_ROW; // Two line adjustments. The first is because line indices from the bottom of the window // start from -1 rather than 0. The second is a blank row to act as the safe area. line -= 2; } else { lineAnchor = Cue.ANCHOR_TYPE_START; // Line indices from the top of the window start from 0, but we want a blank row to act as // the safe area. As a result no adjustment is necessary. line = row; } return new Cue( cueString, Alignment.ALIGN_NORMAL, line, Cue.LINE_TYPE_NUMBER, lineAnchor, position, positionAnchor, Cue.DIMEN_UNSET); }
Example 19
Source File: NotificationPresets.java From AndroidWearable-Samples with Apache License 2.0 | 4 votes |
@Override public Notification buildNotification(Context context) { Notification.Builder builder = buildBasicNotification(context); Notification.BigTextStyle style = new Notification.BigTextStyle(); SpannableStringBuilder title = new SpannableStringBuilder(); appendStyled(title, "Stylized", new StyleSpan(Typeface.BOLD_ITALIC)); title.append(" title"); SpannableStringBuilder text = new SpannableStringBuilder("Stylized text: "); appendStyled(text, "C", new ForegroundColorSpan(Color.RED)); appendStyled(text, "O", new ForegroundColorSpan(Color.GREEN)); appendStyled(text, "L", new ForegroundColorSpan(Color.BLUE)); appendStyled(text, "O", new ForegroundColorSpan(Color.YELLOW)); appendStyled(text, "R", new ForegroundColorSpan(Color.MAGENTA)); appendStyled(text, "S", new ForegroundColorSpan(Color.CYAN)); text.append("; "); appendStyled(text, "1.25x size", new RelativeSizeSpan(1.25f)); text.append("; "); appendStyled(text, "0.75x size", new RelativeSizeSpan(0.75f)); text.append("; "); appendStyled(text, "underline", new UnderlineSpan()); text.append("; "); appendStyled(text, "strikethrough", new StrikethroughSpan()); text.append("; "); appendStyled(text, "bold", new StyleSpan(Typeface.BOLD)); text.append("; "); appendStyled(text, "italic", new StyleSpan(Typeface.ITALIC)); text.append("; "); appendStyled(text, "sans-serif-thin", new TypefaceSpan("sans-serif-thin")); text.append("; "); appendStyled(text, "monospace", new TypefaceSpan("monospace")); text.append("; "); appendStyled(text, "sub", new SubscriptSpan()); text.append("script"); appendStyled(text, "super", new SuperscriptSpan()); style.setBigContentTitle(title); style.bigText(text); builder.setStyle(style); return builder.build(); }
Example 20
Source File: FavoritesScene.java From EhViewer with Apache License 2.0 | 4 votes |
private void updateSearchBar() { Context context = getContext2(); if (null == context || null == mUrlBuilder || null == mSearchBar || null == mFavCatArray) { return; } // Update title int favCat = mUrlBuilder.getFavCat(); String favCatName; if (favCat >= 0 && favCat < 10) { favCatName = mFavCatArray[favCat]; } else if (favCat == FavListUrlBuilder.FAV_CAT_LOCAL) { favCatName = getString(R.string.local_favorites); } else { favCatName = getString(R.string.cloud_favorites); } String keyword = mUrlBuilder.getKeyword(); if (TextUtils.isEmpty(keyword)) { if (!ObjectUtils.equal(favCatName, mOldFavCat)) { mSearchBar.setTitle(getString(R.string.favorites_title, favCatName)); } } else { if (!ObjectUtils.equal(favCatName, mOldFavCat) || !ObjectUtils.equal(keyword, mOldKeyword)) { mSearchBar.setTitle(getString(R.string.favorites_title_2, favCatName, keyword)); } } // Update hint if (!ObjectUtils.equal(favCatName, mOldFavCat)) { Drawable searchImage = DrawableManager.getVectorDrawable(context, R.drawable.v_magnify_x24); SpannableStringBuilder ssb = new SpannableStringBuilder(" "); ssb.append(getString(R.string.favorites_search_bar_hint, favCatName)); int textSize = (int) (mSearchBar.getEditTextTextSize() * 1.25); if (searchImage != null) { searchImage.setBounds(0, 0, textSize, textSize); ssb.setSpan(new ImageSpan(searchImage), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } mSearchBar.setEditTextHint(ssb); } mOldFavCat = favCatName; mOldKeyword = keyword; // Save recent fav cat Settings.putRecentFavCat(mUrlBuilder.getFavCat()); }