use of android.text.style.StrikethroughSpan in project android_frameworks_base by crdroidandroid.
the class HtmlToSpannedConverter method endCssStyle.
private static void endCssStyle(Editable text) {
Strikethrough s = getLast(text, Strikethrough.class);
if (s != null) {
setSpanFromMark(text, s, new StrikethroughSpan());
}
Background b = getLast(text, Background.class);
if (b != null) {
setSpanFromMark(text, b, new BackgroundColorSpan(b.mBackgroundColor));
}
Foreground f = getLast(text, Foreground.class);
if (f != null) {
setSpanFromMark(text, f, new ForegroundColorSpan(f.mForegroundColor));
}
}
use of android.text.style.StrikethroughSpan in project MyDiary by erttyy8821.
the class MemoAdapter method setMemoContent.
private void setMemoContent(MemoViewHolder holder, final int position) {
if (memoList.get(position).isChecked()) {
SpannableString spannableContent = new SpannableString(memoList.get(position).getContent());
spannableContent.setSpan(new StrikethroughSpan(), 0, spannableContent.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.getTVContent().setText(spannableContent);
holder.getTVContent().setAlpha(0.4F);
} else {
holder.getTVContent().setText(memoList.get(position).getContent());
holder.getTVContent().setAlpha(1F);
}
}
use of android.text.style.StrikethroughSpan in project c-geo by just-radovan.
the class cgCacheListAdapter method getView.
@Override
public View getView(int position, View rowView, ViewGroup parent) {
if (inflater == null) {
inflater = ((Activity) getContext()).getLayoutInflater();
}
if (position > getCount()) {
Log.w(cgSettings.tag, "cgCacheListAdapter.getView: Attempt to access missing item #" + position);
return null;
}
cgCache cache = getItem(position);
if (rowView == null) {
rowView = (View) inflater.inflate(R.layout.cache, null);
holder = new cgCacheView();
holder.oneCache = (RelativeLayout) rowView.findViewById(R.id.one_cache);
holder.checkbox = (CheckBox) rowView.findViewById(R.id.checkbox);
holder.oneInfo = (RelativeLayout) rowView.findViewById(R.id.one_info);
holder.oneCheckbox = (RelativeLayout) rowView.findViewById(R.id.one_checkbox);
holder.foundMark = (ImageView) rowView.findViewById(R.id.found_mark);
holder.offlineMark = (ImageView) rowView.findViewById(R.id.offline_mark);
holder.oneCache = (RelativeLayout) rowView.findViewById(R.id.one_cache);
holder.text = (TextView) rowView.findViewById(R.id.text);
holder.directionLayout = (RelativeLayout) rowView.findViewById(R.id.direction_layout);
holder.distance = (cgDistanceView) rowView.findViewById(R.id.distance);
holder.direction = (cgCompassMini) rowView.findViewById(R.id.direction);
holder.dirImgLayout = (RelativeLayout) rowView.findViewById(R.id.dirimg_layout);
holder.dirImg = (ImageView) rowView.findViewById(R.id.dirimg);
holder.inventory = (RelativeLayout) rowView.findViewById(R.id.inventory);
holder.favourite = (TextView) rowView.findViewById(R.id.favourite);
holder.info = (TextView) rowView.findViewById(R.id.info);
rowView.setTag(holder);
} else {
holder = (cgCacheView) rowView.getTag();
}
if (cache.own == true) {
if (settings.skin == 1) {
holder.oneInfo.setBackgroundResource(R.color.owncache_background_light);
holder.oneCheckbox.setBackgroundResource(R.color.owncache_background_light);
} else {
holder.oneInfo.setBackgroundResource(R.color.owncache_background_dark);
holder.oneCheckbox.setBackgroundResource(R.color.owncache_background_dark);
}
} else {
if (settings.skin == 1) {
holder.oneInfo.setBackgroundResource(R.color.background_light);
holder.oneCheckbox.setBackgroundResource(R.color.background_light);
} else {
holder.oneInfo.setBackgroundResource(R.color.background_dark);
holder.oneCheckbox.setBackgroundResource(R.color.background_dark);
}
}
final touchListener touchLst = new touchListener(cache.geocode, cache.name, cache);
rowView.setOnClickListener(touchLst);
rowView.setOnLongClickListener(touchLst);
rowView.setOnTouchListener(touchLst);
rowView.setLongClickable(true);
if (selectMode == true) {
if (cache.statusCheckedView == true) {
// move fast when already slided
moveRight(holder, cache, true);
} else {
moveRight(holder, cache, false);
}
} else if (cache.statusChecked == true) {
holder.checkbox.setChecked(true);
if (cache.statusCheckedView == true) {
// move fast when already slided
moveRight(holder, cache, true);
} else {
moveRight(holder, cache, false);
}
} else {
holder.checkbox.setChecked(false);
if (cache.statusCheckedView == false) {
holder.oneInfo.clearAnimation();
} else {
moveLeft(holder, cache, false);
}
}
holder.checkbox.setOnClickListener(new checkBoxListener(cache));
if (distances.contains(holder.distance) == false) {
distances.add(holder.distance);
}
holder.distance.setContent(base, cache.latitude, cache.longitude);
if (compasses.contains(holder.direction) == false) {
compasses.add(holder.direction);
}
holder.direction.setContent(base, cache.latitude, cache.longitude);
if (cache.logOffline == true) {
holder.offlineMark.setVisibility(View.VISIBLE);
holder.foundMark.setVisibility(View.GONE);
} else if (cache.found == true) {
holder.offlineMark.setVisibility(View.GONE);
holder.foundMark.setVisibility(View.VISIBLE);
} else {
holder.offlineMark.setVisibility(View.GONE);
holder.foundMark.setVisibility(View.GONE);
}
if (cache.nameSp == null) {
cache.nameSp = (new Spannable.Factory()).newSpannable(cache.name);
if (cache.disabled == true || cache.archived == true) {
// strike
cache.nameSp.setSpan(new StrikethroughSpan(), 0, cache.nameSp.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
holder.text.setText(cache.nameSp, TextView.BufferType.SPANNABLE);
if (gcIcons.containsKey(cache.type) == true) {
// cache icon
holder.text.setCompoundDrawablesWithIntrinsicBounds(gcIcons.get(cache.type), null, null, null);
} else {
// unknown cache type, "mystery" icon
holder.text.setCompoundDrawablesWithIntrinsicBounds(gcIcons.get("mystery"), null, null, null);
}
if (holder.inventory.getChildCount() > 0) {
holder.inventory.removeAllViews();
}
ImageView tbIcon = null;
if (cache.inventoryItems > 0) {
tbIcon = (ImageView) inflater.inflate(R.layout.trackable_icon, null);
tbIcon.setImageResource(R.drawable.trackable_all);
holder.inventory.addView(tbIcon);
holder.inventory.setVisibility(View.VISIBLE);
} else {
holder.inventory.setVisibility(View.GONE);
}
boolean setDiDi = false;
if (cache.latitude != null && cache.longitude != null) {
holder.direction.setVisibility(View.VISIBLE);
holder.direction.updateAzimuth(azimuth);
if (latitude != null && longitude != null) {
holder.distance.update(latitude, longitude);
holder.direction.updateCoords(latitude, longitude);
}
setDiDi = true;
} else {
if (cache.distance != null) {
holder.distance.setDistance(cache.distance);
setDiDi = true;
}
if (cache.direction != null) {
holder.direction.setVisibility(View.VISIBLE);
holder.direction.updateAzimuth(azimuth);
holder.direction.updateHeading(cache.direction);
setDiDi = true;
}
}
if (setDiDi == true) {
holder.directionLayout.setVisibility(View.VISIBLE);
holder.dirImgLayout.setVisibility(View.GONE);
} else {
holder.directionLayout.setVisibility(View.GONE);
holder.distance.clear();
Bitmap dirImgPre = null;
Bitmap dirImg = null;
try {
dirImgPre = BitmapFactory.decodeFile(settings.getStorage() + cache.geocode + "/direction.png");
dirImg = dirImgPre.copy(Bitmap.Config.ARGB_8888, true);
dirImgPre.recycle();
dirImgPre = null;
} catch (Exception e) {
// nothing
}
if (dirImg != null) {
if (settings.skin == 0) {
int length = dirImg.getWidth() * dirImg.getHeight();
int[] pixels = new int[length];
dirImg.getPixels(pixels, 0, dirImg.getWidth(), 0, 0, dirImg.getWidth(), dirImg.getHeight());
for (int i = 0; i < length; i++) {
if (pixels[i] == 0xff000000) {
// replace black with white
pixels[i] = 0xffffffff;
}
}
dirImg.setPixels(pixels, 0, dirImg.getWidth(), 0, 0, dirImg.getWidth(), dirImg.getHeight());
}
holder.dirImg.setImageBitmap(dirImg);
holder.dirImgLayout.setVisibility(View.VISIBLE);
} else {
holder.dirImg.setImageBitmap(null);
holder.dirImgLayout.setVisibility(View.GONE);
}
}
if (cache.favouriteCnt != null) {
holder.favourite.setText(String.format("%d", cache.favouriteCnt));
} else {
holder.favourite.setText("---");
}
int favoriteBack;
// set default background, neither vote nor rating may be available
if (settings.skin == 1) {
favoriteBack = R.drawable.favourite_background_light;
} else {
favoriteBack = R.drawable.favourite_background_dark;
}
if (cache.myVote != null && cache.myVote > 0) {
if (cache.myVote >= 4) {
favoriteBack = ratingBcgs[2];
} else if (cache.myVote >= 3) {
favoriteBack = ratingBcgs[1];
} else if (cache.myVote > 0) {
favoriteBack = ratingBcgs[0];
}
} else if (cache.rating != null && cache.rating > 0) {
if (cache.rating >= 3.5) {
favoriteBack = ratingBcgs[2];
} else if (cache.rating >= 2.1) {
favoriteBack = ratingBcgs[1];
} else if (cache.rating > 0.0) {
favoriteBack = ratingBcgs[0];
}
}
holder.favourite.setBackgroundResource(favoriteBack);
StringBuilder cacheInfo = new StringBuilder();
if (historic == true && cache.visitedDate != null) {
cacheInfo.append(cgBase.timeOut.format(cache.visitedDate));
cacheInfo.append("; ");
cacheInfo.append(cgBase.dateOut.format(cache.visitedDate));
} else {
if (cache.geocode != null && cache.geocode.length() > 0) {
cacheInfo.append(cache.geocode);
}
if (cache.size != null && cache.size.length() > 0) {
if (cacheInfo.length() > 0) {
cacheInfo.append(" | ");
}
cacheInfo.append(cache.size);
}
if ((cache.difficulty != null && cache.difficulty > 0f) || (cache.terrain != null && cache.terrain > 0f) || (cache.rating != null && cache.rating > 0f)) {
if (cacheInfo.length() > 0 && ((cache.difficulty != null && cache.difficulty > 0f) || (cache.terrain != null && cache.terrain > 0f))) {
cacheInfo.append(" |");
}
if (cache.difficulty != null && cache.difficulty > 0f) {
cacheInfo.append(" D:");
cacheInfo.append(String.format(Locale.getDefault(), "%.1f", cache.difficulty));
}
if (cache.terrain != null && cache.terrain > 0f) {
cacheInfo.append(" T:");
cacheInfo.append(String.format(Locale.getDefault(), "%.1f", cache.terrain));
}
}
if (cache.members == true) {
if (cacheInfo.length() > 0) {
cacheInfo.append(" | ");
}
cacheInfo.append(res.getString(R.string.cache_premium));
}
if (cache.reason != null && cache.reason == 1) {
if (cacheInfo.length() > 0) {
cacheInfo.append(" | ");
}
cacheInfo.append(res.getString(R.string.cache_offline));
}
}
holder.info.setText(cacheInfo.toString());
return rowView;
}
use of android.text.style.StrikethroughSpan in project plaid by nickbutcher.
the class Bypass method recurseElement.
// The 'numberOfSiblings' parameters refers to the number of siblings within the parent, including
// the 'element' parameter, as in "How many siblings are you?" rather than "How many siblings do
// you have?".
private CharSequence recurseElement(Element element, int indexWithinParent, int numberOfSiblings, TextView textView, LoadImageCallback loadImageCallback) {
Type type = element.getType();
boolean isOrderedList = false;
if (type == Type.LIST) {
String flagsStr = element.getAttribute("flags");
if (flagsStr != null) {
int flags = Integer.parseInt(flagsStr);
isOrderedList = (flags & Element.F_LIST_ORDERED) != 0;
if (isOrderedList) {
mOrderedListNumber.put(element, 1);
}
}
}
int size = element.size();
CharSequence[] spans = new CharSequence[size];
for (int i = 0; i < size; i++) {
spans[i] = recurseElement(element.children[i], i, size, textView, loadImageCallback);
}
// Clean up after we're done
if (isOrderedList) {
mOrderedListNumber.remove(this);
}
CharSequence concat = TextUtils.concat(spans);
SpannableStringBuilder builder = new ReverseSpannableStringBuilder();
String text = element.getText();
if (element.size() == 0 && element.getParent() != null && element.getParent().getType() != Type.BLOCK_CODE) {
text = text.replace('\n', ' ');
}
switch(type) {
case LIST:
if (element.getParent() != null && element.getParent().getType() == Type.LIST_ITEM) {
builder.append("\n");
}
break;
case LINEBREAK:
builder.append("\n");
break;
case LIST_ITEM:
builder.append(" ");
if (mOrderedListNumber.containsKey(element.getParent())) {
int number = mOrderedListNumber.get(element.getParent());
builder.append(Integer.toString(number) + ".");
mOrderedListNumber.put(element.getParent(), number + 1);
} else {
builder.append(mOptions.mUnorderedListItem);
}
builder.append(" ");
break;
case AUTOLINK:
builder.append(element.getAttribute("link"));
break;
case HRULE:
// This ultimately gets drawn over by the line span, but
// we need something here or the span isn't even drawn.
builder.append("-");
break;
case IMAGE:
if (loadImageCallback != null && !TextUtils.isEmpty(element.getAttribute("link"))) {
// prepend a new line so that images are always on a new line
builder.append("\n");
// Display alt text (or title text) if there is no image
String alt = element.getAttribute("alt");
if (TextUtils.isEmpty(alt)) {
alt = element.getAttribute("title");
}
if (!TextUtils.isEmpty(alt)) {
alt = "[" + alt + "]";
builder.append(alt);
} else {
// Character to be replaced
builder.append("");
}
} else {
// Character to be replaced
builder.append("");
}
break;
}
builder.append(text);
builder.append(concat);
// of the last child within the parent.
if (element.getParent() != null || indexWithinParent < (numberOfSiblings - 1)) {
if (type == Type.LIST_ITEM) {
if (element.size() == 0 || !element.children[element.size() - 1].isBlockElement()) {
builder.append("\n");
}
} else if (element.isBlockElement() && type != Type.BLOCK_QUOTE) {
if (type == Type.LIST) {
// If this is a nested list, don't include newlines
if (element.getParent() == null || element.getParent().getType() != Type.LIST_ITEM) {
builder.append("\n");
}
} else if (element.getParent() != null && element.getParent().getType() == Type.LIST_ITEM) {
// List items should never double-space their entries
builder.append("\n");
} else {
builder.append("\n\n");
}
}
}
switch(type) {
case HEADER:
String levelStr = element.getAttribute("level");
int level = Integer.parseInt(levelStr);
setSpan(builder, new RelativeSizeSpan(mOptions.mHeaderSizes[level - 1]));
setSpan(builder, new StyleSpan(Typeface.BOLD));
break;
case LIST:
setBlockSpan(builder, new LeadingMarginSpan.Standard(mListItemIndent));
break;
case EMPHASIS:
setSpan(builder, new StyleSpan(Typeface.ITALIC));
break;
case DOUBLE_EMPHASIS:
setSpan(builder, new StyleSpan(Typeface.BOLD));
break;
case TRIPLE_EMPHASIS:
setSpan(builder, new StyleSpan(Typeface.BOLD_ITALIC));
break;
case BLOCK_CODE:
setSpan(builder, new LeadingMarginSpan.Standard(mCodeBlockIndent));
setSpan(builder, new TypefaceSpan("monospace"));
break;
case CODE_SPAN:
setSpan(builder, new TypefaceSpan("monospace"));
break;
case LINK:
case AUTOLINK:
String link = element.getAttribute("link");
if (!TextUtils.isEmpty(link) && Patterns.EMAIL_ADDRESS.matcher(link).matches()) {
link = "mailto:" + link;
}
setSpan(builder, new TouchableUrlSpan(link, textView.getLinkTextColors(), textView.getHighlightColor()));
break;
case BLOCK_QUOTE:
// We add two leading margin spans so that when the order is reversed,
// the QuoteSpan will always be in the same spot.
setBlockSpan(builder, new LeadingMarginSpan.Standard(mBlockQuoteIndent));
//setBlockSpan(builder, new QuoteSpan(mOptions.mBlockQuoteLineColor));
setBlockSpan(builder, new FancyQuoteSpan(mBlockQuoteLineWidth, mBlockQuoteLineIndent, mOptions.mBlockQuoteLineColor));
setBlockSpan(builder, new ForegroundColorSpan(mOptions.mBlockQuoteTextColor));
setBlockSpan(builder, new LeadingMarginSpan.Standard(mBlockQuoteIndent));
setBlockSpan(builder, new StyleSpan(Typeface.ITALIC));
break;
case STRIKETHROUGH:
setSpan(builder, new StrikethroughSpan());
break;
case HRULE:
setSpan(builder, new HorizontalLineSpan(mOptions.mHruleColor, mHruleSize, mHruleTopBottomPadding));
break;
case IMAGE:
String url = element.getAttribute("link");
if (loadImageCallback != null && !TextUtils.isEmpty(url)) {
setPrependedNewlineSpan(builder, mOptions.mPreImageLinebreakHeight);
ImageLoadingSpan loadingSpan = new ImageLoadingSpan();
setSpanWithPrependedNewline(builder, loadingSpan);
// make the (eventually loaded) image span clickable to open in browser
setSpanWithPrependedNewline(builder, new TouchableUrlSpan(url, textView.getLinkTextColors(), textView.getHighlightColor()));
loadImageCallback.loadImage(url, loadingSpan);
}
break;
}
return builder;
}
use of android.text.style.StrikethroughSpan in project android_frameworks_base by ParanoidAndroid.
the class HtmlTest method testMarkup.
@SmallTest
public void testMarkup() throws Exception {
SpannableString s;
s = new SpannableString("Hello bold world");
s.setSpan(new StyleSpan(Typeface.BOLD), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <b>bold</b> world</p>\n");
s = new SpannableString("Hello italic world");
s.setSpan(new StyleSpan(Typeface.ITALIC), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <i>italic</i> world</p>\n");
s = new SpannableString("Hello monospace world");
s.setSpan(new TypefaceSpan("monospace"), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <tt>monospace</tt> world</p>\n");
s = new SpannableString("Hello superscript world");
s.setSpan(new SuperscriptSpan(), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <sup>superscript</sup> world</p>\n");
s = new SpannableString("Hello subscript world");
s.setSpan(new SubscriptSpan(), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <sub>subscript</sub> world</p>\n");
s = new SpannableString("Hello underline world");
s.setSpan(new UnderlineSpan(), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <u>underline</u> world</p>\n");
s = new SpannableString("Hello struck world");
s.setSpan(new StrikethroughSpan(), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <strike>struck</strike> world</p>\n");
s = new SpannableString("Hello linky world");
s.setSpan(new URLSpan("http://www.google.com"), 6, s.length() - 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
assertEquals(Html.toHtml(s), "<p>Hello <a href=\"http://www.google.com\">linky</a> world</p>\n");
}
Aggregations