diff --git a/.travis.yml b/.travis.yml index 7812812..726bc7c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ android: - tools - tools - platform-tools - - build-tools-27.0.0 + - build-tools-27.0.1 - android-27 - extra-android-m2repository diff --git a/README.md b/README.md index 6a8bb92..f970afc 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ You can customize ReadMoreTextView with: - app:showTrimExpandedText: Show the trim text if it's true. - app:colorClickableText: Text color of trim clickable text. - app:trimMode: Choose trim mode with two options: trimModeLength or trimModeLines. +- app:expandedTextAppearance: Style for text that appears when the view is expanded. +- app:collapsedTextAppearance: Style for text that appears when the view is collapsed. ## Screenshots diff --git a/app/build.gradle b/app/build.gradle index 7c556c1..475052c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 27 - buildToolsVersion "27.0.0" + buildToolsVersion "27.0.1" defaultConfig { applicationId "com.borjabravo.readmoretextview" @@ -25,8 +25,8 @@ android { } dependencies { - implementation 'com.android.support:appcompat-v7:27.0.0' - implementation 'com.android.support:design:27.0.0' + implementation 'com.android.support:appcompat-v7:27.0.1' + implementation 'com.android.support:design:27.0.1' implementation project(':readmoretextview') testImplementation 'junit:junit:4.12' } diff --git a/app/src/main/java/com/borjabravo/readmoretextviewsample/MainActivity.java b/app/src/main/java/com/borjabravo/readmoretextviewsample/MainActivity.java index 8f50499..52caa21 100644 --- a/app/src/main/java/com/borjabravo/readmoretextviewsample/MainActivity.java +++ b/app/src/main/java/com/borjabravo/readmoretextviewsample/MainActivity.java @@ -17,6 +17,8 @@ protected void onCreate(Bundle savedInstanceState) { TextView text3 = findViewById(R.id.text3); text3.setText(getString(R.string.lorem_ipsum3)); TextView text4 = findViewById(R.id.text4); - text4.setText(getString(R.string.one_line_text)); + text4.setText(getString(R.string.lorem_ipsum)); + TextView text5 = findViewById(R.id.text5); + text5.setText(getString(R.string.one_line_text)); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 01a64c6..158c17a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -13,14 +13,14 @@ android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:trimCollapsedText="@string/show_all_content"/> + app:trimCollapsedText="@string/show_all_content" /> + app:colorClickableText="@color/colorPrimary" /> + app:trimLength="100" /> + android:layout_marginTop="@dimen/activity_vertical_margin" + app:collapsedTextAppearance="@style/AppTheme.TextAppearance.Collapsed" + app:expandedTextAppearance="@style/AppTheme.TextAppearance.Expanded" + app:trimCollapsedText="@string/show_all_content" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 545b9c6..5755ee3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -17,4 +17,17 @@ + + diff --git a/readmoretextview/build.gradle b/readmoretextview/build.gradle index 1fefb5e..1c96e0b 100644 --- a/readmoretextview/build.gradle +++ b/readmoretextview/build.gradle @@ -13,7 +13,7 @@ publish { android { compileSdkVersion 27 - buildToolsVersion '27.0.0' + buildToolsVersion '27.0.1' defaultConfig { minSdkVersion 14 @@ -28,6 +28,6 @@ android { } dependencies { - implementation 'com.android.support:support-compat:27.0.0' + implementation 'com.android.support:support-compat:27.0.1' testImplementation 'junit:junit:4.12' } \ No newline at end of file diff --git a/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java b/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java index f560151..30a177d 100644 --- a/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java +++ b/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java @@ -19,12 +19,14 @@ import android.content.res.TypedArray; import android.graphics.Color; import android.os.Build; +import android.support.annotation.StyleRes; import android.support.v4.content.ContextCompat; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextPaint; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; +import android.text.style.TextAppearanceSpan; import android.util.AttributeSet; import android.view.View; import android.view.ViewTreeObserver; @@ -40,6 +42,11 @@ public class ReadMoreTextView extends TextView { private static final boolean DEFAULT_SHOW_TRIM_EXPANDED_TEXT = true; private static final String ELLIPSIZE = "... "; + @StyleRes + private final int expandedTextAppearance; + @StyleRes + private final int collapsedTextAppearance; + private CharSequence text; private BufferType bufferType; private boolean readMore = true; @@ -74,6 +81,8 @@ public ReadMoreTextView(Context context, AttributeSet attrs) { this.showTrimExpandedText = typedArray.getBoolean(R.styleable.ReadMoreTextView_showTrimExpandedText, DEFAULT_SHOW_TRIM_EXPANDED_TEXT); this.trimMode = typedArray.getInt(R.styleable.ReadMoreTextView_trimMode, TRIM_MODE_LINES); + this.expandedTextAppearance = typedArray.getResourceId(R.styleable.ReadMoreTextView_expandedTextAppearance, -1); + this.collapsedTextAppearance = typedArray.getResourceId(R.styleable.ReadMoreTextView_collapsedTextAppearance, -1); typedArray.recycle(); viewMoreSpan = new ReadMoreClickableSpan(); onGlobalLayoutLineEndIndex(); @@ -137,12 +146,14 @@ private CharSequence updateCollapsedText() { SpannableStringBuilder s = new SpannableStringBuilder(text, 0, trimEndIndex) .append(ELLIPSIZE) .append(trimCollapsedText); + addTextStyleSpan(collapsedTextAppearance, s, trimCollapsedText); return addClickableSpan(s, trimCollapsedText); } private CharSequence updateExpandedText() { if (showTrimExpandedText) { SpannableStringBuilder s = new SpannableStringBuilder(text, 0, text.length()).append(trimExpandedText); + addTextStyleSpan(expandedTextAppearance, s, trimExpandedText); return addClickableSpan(s, trimExpandedText); } return text; @@ -153,6 +164,12 @@ private CharSequence addClickableSpan(SpannableStringBuilder s, CharSequence tri return s; } + private CharSequence addTextStyleSpan( int textAppearance, SpannableStringBuilder s, CharSequence text) { + s.setSpan(new TextAppearanceSpan(getContext(), textAppearance), s.length() - text.length(), + s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + return s; + } + public void setTrimLength(int trimLength) { this.trimLength = trimLength; setText(); diff --git a/readmoretextview/src/main/res/values/attrs.xml b/readmoretextview/src/main/res/values/attrs.xml index 54da4a8..4c5eeb2 100644 --- a/readmoretextview/src/main/res/values/attrs.xml +++ b/readmoretextview/src/main/res/values/attrs.xml @@ -1,6 +1,8 @@ + + @@ -8,8 +10,8 @@ - - + + \ No newline at end of file