Skip to content

Commit e7d7069

Browse files
committed
Added two new span methods to StringUtils
1 parent 18c16a7 commit e7d7069

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ allprojects {
1515
Step 2. Add the dependency
1616
```
1717
dependencies {
18-
compile "com.github.playmoweb:library-android-utils:1.0.3"
18+
compile "com.github.playmoweb:library-android-utils:1.0.4"
1919
}
2020
```
2121

android-utils/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ android {
66
defaultConfig {
77
minSdkVersion 16
88
targetSdkVersion 27
9-
versionCode 1
10-
versionName "1.0.3"
9+
versionCode 4
10+
versionName "1.0.4"
1111
}
1212
}
1313

android-utils/src/main/java/com/playmoweb/android/utils/StringUtils.java

+37
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import android.support.annotation.NonNull;
44
import android.support.annotation.Nullable;
55
import android.text.Html;
6+
import android.text.SpannableString;
67
import android.text.Spanned;
8+
import android.text.TextUtils;
79

810
import java.util.Collection;
911
import java.util.regex.Matcher;
@@ -71,4 +73,39 @@ public static Spanned getHtml(@NonNull final String text) {
7173
return Html.fromHtml(text);
7274
}
7375
}
76+
77+
/**
78+
* Examples :
79+
* - <code>span(new UnderlineSpan(), "all of this is underlined")</code>
80+
* - <code>span(new StyleSpan(Typeface.BOLD), "all of this is bold")</code>
81+
*
82+
* @param spanToApply Object spanToApply
83+
* @param all CharSequence all
84+
* @return SpannableString
85+
*/
86+
@NonNull
87+
public static SpannableString span(@NonNull final Object spanToApply, @NonNull final CharSequence all) {
88+
return span(spanToApply, all, null);
89+
}
90+
91+
/**
92+
* Examples :
93+
* - <code>span(new UnderlineSpan(), "only this is underlined", "this")</code>
94+
* - <code>span(new StyleSpan(Typeface.BOLD), "only this is bold", "this")</code>
95+
*
96+
* @param spanToApply Object spanToApply
97+
* @param all CharSequence all
98+
* @param needle CharSequence needle
99+
* @return SpannableString
100+
*/
101+
@NonNull
102+
public static SpannableString span(@NonNull final Object spanToApply, @NonNull final CharSequence all, @Nullable final CharSequence needle) {
103+
SpannableString spannableString = new SpannableString(all);
104+
if (needle != null) {
105+
spannableString.setSpan(spanToApply, TextUtils.indexOf(all, needle), TextUtils.indexOf(all, needle) + needle.length(), 0);
106+
} else {
107+
spannableString.setSpan(spanToApply, 0, all.length(), 0);
108+
}
109+
return spannableString;
110+
}
74111
}

0 commit comments

Comments
 (0)