项目:GitHub
文件:MainActivity.java
private void initMarqueeView3() {
SimpleMF<Spanned> marqueeFactory3 = new SimpleMF<>(MainActivity.this);
List<Spanned> datas3 = new ArrayList<>();
datas3.add(Html.fromHtml("<font color=\"#ff0000\">《赋得古原草送别》</font>"));
datas3.add(Html.fromHtml("<font color=\"#00ff00\">离离原上草,</font>一岁一枯荣。"));
datas3.add(Html.fromHtml("野火烧不尽,<font color=\"#0000ff\">春风吹又生。</font>"));
datas3.add(Html.fromHtml("<font color=\"#333333\">远芳侵古道,晴翠接荒城。</font>"));
datas3.add(Html.fromHtml("<font color=\"#ffffff\">又送王孙去,萋萋满别情。</font>"));
marqueeFactory3.setData(datas3);
marqueeView3.setMarqueeFactory(marqueeFactory3);
marqueeView3.startFlipping();
marqueeFactory3.setonItemClickListener(new MarqueeFactory.OnItemClickListener<TextView,Spanned>() {
@Override
public void onItemClickListener(MarqueeFactory.ViewHolder<TextView,Spanned> holder) {
Toast.makeText(MainActivity.this,holder.data,Toast.LENGTH_SHORT).show();
}
});
}
项目:AndroidUtilCode-master
文件:SpanUtils.java
public void drawLeadingMargin(Canvas c,Paint p,int x,int dir,int top,int baseline,int bottom,CharSequence text,int start,int end,boolean first,Layout layout) {
int st = ((Spanned) text).getSpanStart(this);
int itop = layout.getLinetop(layout.getLineForOffset(st));
if (dir < 0)
x -= mBitmap.getWidth();
int delta = totalHeight - mBitmap.getHeight();
if (delta > 0) {
if (mVerticalAlignment == ALIGN_TOP) {
c.drawBitmap(mBitmap,x,itop,p);
} else if (mVerticalAlignment == ALIGN_CENTER) {
c.drawBitmap(mBitmap,itop + delta / 2,p);
} else {
c.drawBitmap(mBitmap,itop + delta,p);
}
} else {
c.drawBitmap(mBitmap,p);
}
}
项目:GitHub
文件:SpanUtils.java
public void drawLeadingMargin(Canvas c,p);
}
}
项目:chromium-for-android-56-debug-video
文件:InfoBarLayout.java
/**
* 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;
}
项目:RNLearn_Project1
文件:ReactTextTest.java
@Test
public void testTextdecorationLineLineThroughApplied() {
UIManagerModule uiManager = getUIManagerModule();
ReactRootView rootView = createText(
uiManager,JavaOnlyMap.of(ViewProps.TEXT_decoration_LINE,"line-through"),JavaOnlyMap.of(ReactTextShadowNode.PROP_TEXT,"test text"));
TextView textView = (TextView) rootView.getChildAt(0);
Spanned text = (Spanned) textView.getText();
Underlinespan[] underlinespans =
text.getSpans(0,text.length(),Underlinespan.class);
StrikethroughSpan strikeThroughSpan =
getSingleSpan(textView,StrikethroughSpan.class);
assertthat(underlinespans).hasSize(0);
assertthat(strikeThroughSpan instanceof StrikethroughSpan).isTrue();
}
项目:Tusky
文件:BaseActivity.java
protected void createMastodonApi() {
mastodonApidispatcher = new dispatcher();
Gson gson = new GsonBuilder()
.registerTypeAdapter(Spanned.class,new SpannedTypeAdapter())
.create();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
OkHttpClient.Builder okBuilder =
OkHttpUtils.getCompatibleClientBuilder(preferences)
.addInterceptor(new AuthInterceptor(this))
.dispatcher(mastodonApidispatcher);
if (BuildConfig.DEBUG) {
okBuilder.addInterceptor(
new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC));
}
Retrofit retrofit = new Retrofit.Builder().baseUrl(getBaseUrl())
.client(okBuilder.build())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
mastodonApi = retrofit.create(MastodonApi.class);
}
项目:BookReader-master
文件:BookContentTextView.java
public void setText(String text) {
int startIndex = 0;
while (true) {
int start = text.indexOf("《");
int end = text.indexOf("》");
if (start < 0 || end < 0) {
append(text.substring(startIndex));
break;
}
append(text.substring(startIndex,start));
SpannableString spanableInfo = new SpannableString(text.substring(start,end + 1));
spanableInfo.setSpan(new Clickable(spanableInfo.toString()),end + 1 - start,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
append(spanableInfo);
//setMovementMethod()该方法必须调用,否则点击事件不响应
setMovementMethod(LinkMovementMethod.getInstance());
text = text.substring(end + 1);
LogUtils.e(spanableInfo.toString());
}
}
项目:mvvm-template
文件:TableHandler.java
private void readNode(Object node,Table table) {
if (node instanceof TagNode) {
TagNode tagNode = (TagNode) node;
if (tagNode.getName().equals("td") || tagNode.getName().equals("th")) {
Spanned result = this.getSpanner().fromTagNode(tagNode);
table.addCell(result);
return;
}
if (tagNode.getName().equals("tr")) {
table.addRow();
}
for (Object child : tagNode.getChildTags()) {
readNode(child,table);
}
}
}
项目:qmui
文件:QMUILinkify.java
private static final void applyLink(String url,Spannable text,final ColorStateList linkColor,final ColorStateList bgColor,QMUIOnSpanClickListener l) {
text.setSpan(new StyleableuRLSpan(url,l) {
@Override
public void updateDrawState(TextPaint ds) {
if (linkColor != null) {
int normalLinkColor = linkColor.getColorForState(new int[]{android.R.attr.state_enabled,-android.R.attr.state_pressed},Color.TRANSPARENT);
int pressedLinkColor = linkColor.getColorForState(new int[]{android.R.attr.state_pressed},normalLinkColor);
ds.linkColor = mpressed ? pressedLinkColor : normalLinkColor;
}
if (bgColor != null) {
int normalBgColor = bgColor.getColorForState(new int[]{android.R.attr.state_enabled,Color.TRANSPARENT);
int pressedBgColor = bgColor.getColorForState(new int[]{android.R.attr.state_pressed},normalBgColor);
ds.bgColor = mpressed ? pressedBgColor : normalBgColor;
}
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
},start,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
项目:OSchina_resources_android
文件:RichEditText.java
public static Spannable matchMention(Spannable spannable) {
String text = spannable.toString();
Pattern pattern = Pattern.compile(MATCH_MENTION);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String str = matcher.group();
int matcherStart = matcher.start();
int matcherEnd = matcher.end();
spannable.setSpan(new RichEditText.TagSpan(str),matcherStart,matcherEnd,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
log("matchMention:" + str + " " + matcherStart + " " + matcherEnd);
}
return spannable;
}
项目:financisto1-holo
文件:AmountInput.java
@Override
public CharSequence filter(CharSequence source,Spanned dest,int dstart,int dend) {
if (end - start == 1) {
char c = source.charat(0);
if (c == '.' || c == ',') {
onDotOrComma();
return "";
}
if (isIncomeExpenseEnabled()) {
if (c == '-') {
setExpense();
return "";
}
if (c == '+') {
setIncome();
return "";
}
}
}
return super.filter(source,dest,dstart,dend);
}
项目:Tusky
文件:ComposeActivity.java
private void onUploadSuccess(final QueuedMedia item,Attachment media) {
item.id = media.id;
item.preview.setProgress(-1);
item.readyStage = QueuedMedia.ReadyStage.UPLOADED;
/* Add the upload URL to the text field. Also,keep a reference to the span so if the user
* chooses to remove the media,the URL is also automatically removed. */
item.uploadUrl = new URLSpan(media.textUrl);
int end = 1 + media.textUrl.length();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(' ');
builder.append(media.textUrl);
builder.setSpan(item.uploadUrl,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
int cursorStart = textEditor.getSelectionStart();
int cursorEnd = textEditor.getSelectionEnd();
textEditor.append(builder);
textEditor.setSelection(cursorStart,cursorEnd);
waitForMediaLatch.countDown();
}
项目:stynico
文件:JumpingBeans.java
@SuppressWarnings("Range") // Lint bug: the if makes sure waveCharDelay >= 0
private JumpingBeansspan[] buildWavingSpans(SpannableStringBuilder sbb) {
JumpingBeansspan[] spans;
if (waveCharDelay == DEFAULT_WAVE_CHAR_DELAY) {
waveCharDelay = loopDuration / (3 * (endPos - startPos));
}
spans = new JumpingBeansspan[endPos - startPos];
for (int pos = startPos; pos < endPos; pos++) {
JumpingBeansspan jumpingBean =
new JumpingBeansspan(textView,loopDuration,pos - startPos,waveCharDelay,animRange);
sbb.setSpan(jumpingBean,pos,pos + 1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spans[pos - startPos] = jumpingBean;
}
return spans;
}
项目:stynico
文件:EmojiFilter.java
@Override
public CharSequence filter(CharSequence source,int dend) {
// check black-list set
for (int i = 0; i < source.length(); i++) {
// LogUtil.e(Integer.toHexString(source.charat(i)));
}
// LogUtil.e(source.toString() + " length: " + source.toString().length() +
// " ;bytes length: " + source.toString().getBytes().length);
// Iterator<String> iterator = filterSet.iterator();
// while (iterator.hasNext()) {
// String filter = iterator.next();
// if (filter.equals(source.toString())) {
// LogUtil.e(filter + " length: " + filter.length() +
// " ;bytes length: " + filter.getBytes().length);
// for (int i= 0; i < source.length(); i++){
// LogUtil.e(Integer.toHexString(source.charat(i)));
// }
// return "";
// }
// }
if (filterSet.contains(source.toString())) {
return "";
}
return source;
}
private Spanned formatText(String input) {
BaseModule bm = mdisplay.mLogic.mBaseModule;
if(CalculatorSettings.digitGrouping(getContext())) {
// Add grouping,and then split on the selection handle
// which is saved as a unique char
String grouped = bm.groupSentence(input,selectionHandle);
if(grouped.contains(String.valueOf(BaseModule.SELECTION_HANDLE))) {
String[] temp = grouped.split(String.valueOf(BaseModule.SELECTION_HANDLE));
selectionHandle = temp[0].length();
input = "";
for(String s : temp) {
input += s;
}
}
else {
input = grouped;
selectionHandle = input.length();
}
}
return Html.fromHtml(mEquationFormatter.insertSupscripts(input));
}
项目:DailyStudy
文件:SpannableStringActivity.java
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0x001:
SpannableString string = new SpannableString("设置文字的前景色为淡蓝色");
RelativeSizeSpan sizeSpan = new RelativeSizeSpan(1.5f);
string.setSpan(sizeSpan,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
bgtext.setText(string);
pos++;
if (pos >= bgtext.getText().length()) {
pos = 0;
}
Message ms = Message.obtain();
ms.what = 0x001;
handler.sendEmptyMessageDelayed(0x001,150);
break;
}
}
项目:Markwon
文件:SpannableBuilder.java
@NonNull
public CharSequence removeFromEnd(int start) {
// this method is not intended to be used by clients
// it's a workaround to support tables
final int end = length();
// as we do not expose builder and do no apply spans to it,we are safe to NOT to convert to String
final SpannableStringBuilderImpl impl = new SpannableStringBuilderImpl(builder.subSequence(start,end));
final Iterator<Span> iterator = spans.iterator();
Span span;
while (iterator.hasNext() && ((span = iterator.next())) != null) {
if (span.start >= start && span.end <= end) {
impl.setSpan(span.what,span.start - start,span.end - start,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
iterator.remove();
}
}
builder.replace(start,"");
return impl;
}
项目:androidtools
文件:StringUtils.java
/**
* Input frame character length limit
*
* @param mEdit EditText
* @param maxLength maxLength
*/
public void setEditable(EditText mEdit,int maxLength) {
if (mEdit.getText().length() < maxLength) {
mEdit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength) {
}});
mEdit.setCursorVisible(true);
mEdit.setFocusableInTouchMode(true);
mEdit.requestFocus();
} else {
mEdit.setFilters(new InputFilter[]{new InputFilter() {
@Override
public CharSequence filter(CharSequence source,int dend) {
return source.length() < 1 ? dest.subSequence(dstart,dend) : "";
}
}});
mEdit.setCursorVisible(false);
mEdit.setFocusableInTouchMode(false);
mEdit.clearFocus();
}
}
项目:Viajes
文件:Utils.java
public static Spanned getSpannedString(String str,String sub) {
String lowerCase = str.toLowerCase();
String stag = "<font color='#2196F3'>",etag = "</font>";
int atIndx = 0;
int ind = -1;
int curInc = 0;
while ((ind = lowerCase.indexOf(sub,atIndx)) != -1) {
Log.d("Utils","getSpannableString: =" + ind);
str = str.substring(0,ind + curInc)
+ stag
+ str.substring(ind + curInc,ind + curInc + sub.length())
+ etag
+ str.substring(ind + curInc + sub.length(),str.length());
atIndx = ind + sub.length();
curInc += stag.length() + etag.length();
}
return Html.fromHtml(str);
}
项目:SciChart.Android.Examples
文件:CustomTooltipsWithModifiersFragment.java
@Override
protected void internalUpdate(XySeriesInfo seriesInfo) {
final SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(modifierName).append(StringUtil.NEW_LINE);
if (seriesInfo.seriesName != null) {
sb.append(seriesInfo.seriesName);
sb.setSpan(new ForegroundColorSpan(ColorUtil.Black),sb.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.append(StringUtil.NEW_LINE);
}
sb.append("X: ").append(seriesInfo.getFormattedXValue());
sb.append(" Y: ").append(seriesInfo.getFormattedYValue());
setText(sb);
// stroke 0xffff4500
setSeriesColor(0xffe2460c);
}
/**
* Create a spanned string that contains RoundedCornersBackgroundSpan.
*
* @return spanned string
*/
public Spannable build() {
if (mTextParts.isEmpty()) {
throw new IllegalArgumentException("You must specify at least one text part.");
}
boolean first = true;
final SpannableStringBuilder builder = new SpannableStringBuilder();
mSeparatorWidth = 2 * mPadding + mPartsspacing;
for (final Pair<CharSequence,BackgroundHolder> stringPart : mTextParts) {
if (first) {
first = false;
} else {
final int start = builder.length();
builder.append(" ");
final SpacingSpan spacingSpan = SpacingSpan.newInstance(mSeparatorWidth);
builder.setSpan(spacingSpan,builder.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
stringPart.second.setStart(builder.length());
builder.append(stringPart.first);
stringPart.second.setEnd(builder.length());
}
final RoundedCornersBackgroundSpan span = new RoundedCornersBackgroundSpan(this);
builder.setSpan(span,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return builder;
}
项目:PeSanKita-android
文件:RecipientsEditor.java
/**
* Returns <code>text</code>,modified,if necessary,to ensure that
* it ends with a token terminator (for example a space or comma).
* It is a method from the MultiAutoCompleteTextView.Tokenizer interface.
*/
public CharSequence terminatetoken(CharSequence text) {
int i = text.length();
while (i > 0 && text.charat(i - 1) == ' ') {
i--;
}
char c;
if (i > 0 && ((c = text.charat(i - 1)) == ',' || c == ';')) {
return text;
} else {
// Use the same delimiter the user just typed.
// This lets them have a mixture of commas and semicolons in their list.
String separator = mLastSeparator + " ";
if (text instanceof Spanned) {
SpannableString sp = new SpannableString(text + separator);
TextUtils.copySpansFrom((Spanned) text,Object.class,sp,0);
return sp;
} else {
return text + separator;
}
}
}
项目:OSchina_resources_android
文件:RichEditText.java
/**
* 中横线,即删除线
*
* @param isMidLine isMidLine
*/
void setMidLine(boolean isMidLine,int index) {
if (index >= 0 && index < mSections.size()) {
mSections.get(index).setMidLine(isMidLine);
}
Editable edit = getEditableText();
int star = getSectionStart();
int end = getSectionEnd();
if (isMidLine) {
edit.setSpan(new StrikethroughSpan(),star,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
StrikethroughSpan[] styleSpans = edit.getSpans(star,StrikethroughSpan.class);
for (StrikethroughSpan span : styleSpans) {
edit.removeSpan(span);
}
}
}
项目:anitrend-app
文件:DialogManager.java
/**
* Will not auto dismiss
*/
public void createDialogMessage(String header,Spanned body,String pos,String neg,String neu,MaterialDialog.SingleButtonCallback buttonCallback) {
// Build the alert dialog
new MaterialDialog.Builder(mContext)
.onAny(buttonCallback)
.positiveText(pos)
.negativeText(neg)
.neutralText(neu)
.autodismiss(false)
.typeface(Typeface.SANS_SERIF,Typeface.SANS_SERIF)
.iconRes(app_prefs.isLightTheme()?R.drawable.ic_new_releases_black_24dp:R.drawable.ic_new_releases_white_24dp)
.buttonRippleColorRes(R.color.colorAccent)
.positiveColorRes(R.color.colorStateBlue)
.negativeColorRes(R.color.colorStateOrange)
.theme(app_prefs.isLightTheme()?Theme.LIGHT:Theme.DARK)
.title(header)
.content(body)
.show();
}
项目:Nird2
文件:UiUtils.java
public static SpannableStringBuilder getTeaser(Context ctx,Spanned body) {
if (body.length() < TEASER_LENGTH)
throw new IllegalArgumentException(
"String is shorter than TEASER_LENGTH");
SpannableStringBuilder builder =
new SpannableStringBuilder(body.subSequence(0,TEASER_LENGTH));
String ellipsis = ctx.getString(R.string.ellipsis);
builder.append(ellipsis).append(" ");
Spannable readMore = new SpannableString(
ctx.getString(R.string.read_more) + ellipsis);
ForegroundColorSpan fg = new ForegroundColorSpan(
ContextCompat.getColor(ctx,R.color.briar_text_link));
readMore.setSpan(fg,readMore.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(readMore);
return builder;
}
项目:HeroVideo-master
文件:HomeRecommendedSection.java
@SuppressLint("SetTextI18n")
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder)
{
HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder;
setTypeIcon(headerViewHolder);
headerViewHolder.mTypeTv.setText(title);
// headerViewHolder.mTypeRankBtn.setonClickListener(v -> mContext.startActivity(
// new Intent(mContext,OriginalRankActivity.class)));
switch (type)
{
case TYPE_RECOMMENDED:
headerViewHolder.mTypeMore.setVisibility(View.GONE);
headerViewHolder.mTypeRankBtn.setVisibility(View.VISIBLE);
headerViewHolder.mAllLiveNum.setVisibility(View.GONE);
break;
case TYPE_LIVE:
headerViewHolder.mTypeRankBtn.setVisibility(View.GONE);
headerViewHolder.mTypeMore.setVisibility(View.VISIBLE);
headerViewHolder.mAllLiveNum.setVisibility(View.VISIBLE);
SpannableStringBuilder stringBuilder = new SpannableStringBuilder("当前" + liveCount + "个直播");
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(
mContext.getResources().getColor(R.color.pink));
stringBuilder.setSpan(foregroundColorSpan,2,stringBuilder.length() - 3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
headerViewHolder.mAllLiveNum.setText(stringBuilder);
break;
default:
headerViewHolder.mTypeRankBtn.setVisibility(View.GONE);
headerViewHolder.mTypeMore.setVisibility(View.VISIBLE);
headerViewHolder.mAllLiveNum.setVisibility(View.GONE);
break;
}
}
项目:revolution-irc
文件:ChannelSearchDialog.java
@Override
public void bind(Pair<ServerConnectionInfo,String> item) {
String name = item.first.getName();
String channel = item.second;
int iof = channel.indexOf(mHighlightQuery);
SpannableString str = new SpannableString(channel + " " + name);
str.setSpan(new ForegroundColorSpan(mHighlightTextColor),iof,iof + mHighlightQuery.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new ForegroundColorSpan(mSecondaryTextColor),channel.length() + 2,channel.length() + 2 + name.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mText.setText(str);
}
项目:BilibiliClient
文件:HomeRecommendedSection.java
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
HeaderViewHolder viewHolder = (HeaderViewHolder) holder;
setTypeIcon(viewHolder);
viewHolder.mTypeTv.setText(title);
viewHolder.mTypeRankBtn.setonClickListener(v -> {
mContext.startActivity(new Intent(mContext,OriginalRankActivity.class));
});
switch(type){
case TYPE_RECOMMENDED:
viewHolder.mTypeMore.setVisibility(View.GONE);
viewHolder.mTypeRankBtn.setVisibility(View.VISIBLE);
viewHolder.mAllLiveNum.setVisibility(View.GONE);
break;
case TYPE_LIVE:
viewHolder.mTypeMore.setVisibility(View.VISIBLE);
viewHolder.mTypeRankBtn.setVisibility(View.GONE);
viewHolder.mAllLiveNum.setVisibility(View.VISIBLE);
SpannableStringBuilder builder = new SpannableStringBuilder("当前" + liveCount + "个直播");
ForegroundColorSpan colorSpan = new ForegroundColorSpan(mContext.getResources().getColor(R.color.pink_text_color));
builder.setSpan(colorSpan,builder.length() - 3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
viewHolder.mAllLiveNum.setText(builder);
break;
default :
viewHolder.mTypeMore.setVisibility(View.VISIBLE);
viewHolder.mTypeRankBtn.setVisibility(View.GONE);
viewHolder.mAllLiveNum.setVisibility(View.GONE);
break;
}
}
项目:RNLearn_Project1
文件:ReactEditText.java
@Override
protected boolean verifyDrawable(Drawable drawable) {
if (mContainsImages && getText() instanceof Spanned) {
Spanned text = (Spanned) getText();
TextInlineImageSpan[] spans = text.getSpans(0,TextInlineImageSpan.class);
for (TextInlineImageSpan span : spans) {
if (span.getDrawable() == drawable) {
return true;
}
}
}
return super.verifyDrawable(drawable);
}
项目:RLibrary
文件:SpannableStringUtils.java
private Builder(@NonNull CharSequence text) {
this.text = text;
flag = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
foregroundColor = defaultValue;
backgroundColor = defaultValue;
quoteColor = defaultValue;
textSize = -1;
proportion = -1;
xProportion = -1;
mBuilder = new SpannableStringBuilder();
}
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String source) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(source,Html.FROM_HTML_MODE_LEGACY);
} else {
return Html.fromHtml(source);
}
}
项目:MVPArmsTest1
文件:UiUtils.java
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(Context context,int size,TextView v,int res) {
SpannableString ss = new SpannableString(getResources(context).getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size,true);
// 附加属性到文本
ss.setSpan(ass,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
v.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
}
项目:hsv-alpha-color-picker
文件:HexEdit.java
public CharSequence filter(CharSequence source,int dend) {
// If 8 digits have been pasted,replacing all source,trim alpha digits.
// Otherwise standard LengthFilter behavior.
final int srcLength = end - start;
final int dstSelLength = dend - dstart;
if (srcLength == PASTED_LEN && dstSelLength == dest.length()) {
// discard alpha digits:
return source.subSequence(PASTED_LEN - MAX_LENGTH,PASTED_LEN);
}
else {
return sixDigitFilter.filter(source,dend);
}
}
项目:MobileAppForPatient
文件:InputFilterMinMax.java
@Override
public CharSequence filter(CharSequence source,int dend) {
try {
int input = Integer.parseInt(dest.toString() + source.toString());
if (isInRange(min,max,input)) {
return null;
}
}
catch (NumberFormatException nfe) { }
return "";
}
项目:GitHub
文件:Spanny.java
/**
* Sets span objects to the text. This is more efficient than creating a new instance of Spanny
* or SpannableStringBuilder.
* @return {@code SpannableString}.
*/
public static SpannableString spanText(CharSequence text,Object... spans) {
SpannableString spannableString = new SpannableString(text);
for (Object span : spans) {
spannableString.setSpan(span,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return spannableString;
}
项目:MKAPP
文件:ActivitySettings.java
private void markPro(Preference pref,String sku) {
if (sku == null || !IAB.isPurchased(sku,this)) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean dark = prefs.getBoolean("dark_theme",false);
SpannableStringBuilder ssb = new SpannableStringBuilder(" " + pref.getTitle());
ssb.setSpan(new ImageSpan(this,dark ? R.drawable.ic_shopping_cart_white_24dp : R.drawable.ic_shopping_cart_black_24dp),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
pref.setTitle(ssb);
}
}
项目:GitHub
文件:RecyclerViewAdapterHelper.java
/**
* 处理关键字高亮
* 如果需要检索算法库,请联系我
*
* @param originStr 被处理字符串
* @param keyWord 关键字
* @param hightLightColor 高亮颜色
* @return CharSequence
*/
public static CharSequence handleKeyWordHighLight
(String originStr,String keyWord,@ColorInt int hightLightColor) {
SpannableString ss = new SpannableString(originStr);
Pattern p = Pattern.compile(keyWord);
Matcher m = p.matcher(ss);
while (m.find()) {
ss.setSpan(new ForegroundColorSpan(hightLightColor),m.start(),m.end(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return ss;
}
项目:RNLearn_Project1
文件:ReactTextView.java
@Override
public void onStartTemporaryDetach() {
super.onStartTemporaryDetach();
if (mContainsImages && getText() instanceof Spanned) {
Spanned text = (Spanned) getText();
TextInlineImageSpan[] spans = text.getSpans(0,TextInlineImageSpan.class);
for (TextInlineImageSpan span : spans) {
span.onStartTemporaryDetach();
}
}
}
项目:GitHub
文件:Utils.java
@SuppressWarnings("deprecation")
public static Spanned fromHtmlCompat(String text) {
if (hasNougat()) {
return Html.fromHtml(text,Html.FROM_HTML_MODE_LEGACY);
} else {
return Html.fromHtml(text);
}
}
项目:HeadlineNews
文件:SnackbarUtils.java
/**
* 显示snackbar
*/
public void show() {
final View view = parent.get();
if (view == null) return;
if (messageColor != DEFAULT_COLOR) {
SpannableString spannableString = new SpannableString(message);
ForegroundColorSpan colorSpan = new ForegroundColorSpan(messageColor);
spannableString.setSpan(colorSpan,spannableString.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
snackbarWeakReference = new WeakReference<>(Snackbar.make(view,spannableString,duration));
} else {
snackbarWeakReference = new WeakReference<>(Snackbar.make(view,message,duration));
}
final Snackbar snackbar = snackbarWeakReference.get();
final View snackbarView = snackbar.getView();
if (bgResource != -1) {
snackbarView.setBackgroundResource(bgResource);
} else if (bgColor != DEFAULT_COLOR) {
snackbarView.setBackgroundColor(bgColor);
}
if (bottomMargin != 0) {
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) snackbarView.getLayoutParams();
params.bottomMargin = bottomMargin;
}
if (actionText.length() > 0 && actionListener != null) {
if (actionTextColor != DEFAULT_COLOR) {
snackbar.setActionTextColor(actionTextColor);
}
snackbar.setAction(actionText,actionListener);
}
snackbar.show();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。