From 76126c7cce60c0f24e1856f957739b6e18b4449e Mon Sep 17 00:00:00 2001 From: Milan Rajbhandari Date: Fri, 6 Oct 2017 11:41:54 +0800 Subject: [PATCH 1/7] Fixed crash when the text is too short. The view crashed when the text is too short as the spannable index becomes negative. --- .../com/borjabravo/readmoretextview/ReadMoreTextView.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java b/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java index f9bd81b..b74d027 100644 --- a/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java +++ b/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java @@ -113,7 +113,9 @@ private CharSequence getTrimmedText(CharSequence text) { if (trimMode == TRIM_MODE_LINES) { if (text != null && lineEndIndex > 0) { if (readMore) { - return updateCollapsedText(); + if (getLayout().getLineCount() > trimLines) { + return updateCollapsedText(); + } } else { return updateExpandedText(); } @@ -223,4 +225,4 @@ private void refreshLineEndIndex() { e.printStackTrace(); } } -} \ No newline at end of file +} From df344fe07ff8714c3ba954fd8a49ed5154d66c25 Mon Sep 17 00:00:00 2001 From: Borja Bravo Date: Sun, 12 Nov 2017 12:59:00 +0100 Subject: [PATCH 2/7] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 48f14a5..6a8bb92 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ A Custom TextView with trim text ## Download To add the ReadMoreTextView library to your Android Studio project, simply add the following gradle dependency: ```java -compile 'com.borjabravo:readmoretextview:2.0.1' +compile 'com.borjabravo:readmoretextview:2.1.0' ``` ## Usage @@ -36,7 +36,7 @@ You can customize ReadMoreTextView with: License ======= - Copyright 2016 Borja Bravo Álvarez + Copyright 2016 Borja Bravo Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From f63c3aedc1fceaa9a48b9ba78fc58b1ea3131f69 Mon Sep 17 00:00:00 2001 From: Borja Bravo Date: Sun, 12 Nov 2017 13:00:17 +0100 Subject: [PATCH 3/7] Update dependencies to upload v2.1.0 --- app/build.gradle | 16 ++++++++-------- .../readmoretextviewsample/MainActivity.java | 8 ++++---- build.gradle | 6 ++++-- gradle/wrapper/gradle-wrapper.properties | 4 ++-- readmoretextview/build.gradle | 14 +++++++------- .../readmoretextview/ReadMoreTextView.java | 5 +---- 6 files changed, 26 insertions(+), 27 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 72dd8c3..7c556c1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion "25.0.2" + compileSdkVersion 27 + buildToolsVersion "27.0.0" defaultConfig { applicationId "com.borjabravo.readmoretextview" - minSdkVersion 9 - targetSdkVersion 25 + minSdkVersion 14 + targetSdkVersion 27 versionCode 1 versionName "1.0" } @@ -25,8 +25,8 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:design:25.3.1' - compile project(':readmoretextview') - testCompile 'junit:junit:4.12' + implementation 'com.android.support:appcompat-v7:27.0.0' + implementation 'com.android.support:design:27.0.0' + 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 d2abf93..8f50499 100644 --- a/app/src/main/java/com/borjabravo/readmoretextviewsample/MainActivity.java +++ b/app/src/main/java/com/borjabravo/readmoretextviewsample/MainActivity.java @@ -10,13 +10,13 @@ public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - TextView text1 = (TextView) findViewById(R.id.text1); + TextView text1 = findViewById(R.id.text1); text1.setText(getString(R.string.lorem_ipsum)); - TextView text2 = (TextView) findViewById(R.id.text2); + TextView text2 = findViewById(R.id.text2); text2.setText(getString(R.string.lorem_ipsum2)); - TextView text3 = (TextView) findViewById(R.id.text3); + TextView text3 = findViewById(R.id.text3); text3.setText(getString(R.string.lorem_ipsum3)); - TextView text4 = (TextView) findViewById(R.id.text4); + TextView text4 = findViewById(R.id.text4); text4.setText(getString(R.string.one_line_text)); } } diff --git a/build.gradle b/build.gradle index b5aa3b1..ea35e68 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,18 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' - classpath 'com.novoda:bintray-release:0.4.0' + classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.novoda:bintray-release:0.5.0' } } allprojects { repositories { jcenter() + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 17dd129..b692f5e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Apr 17 22:12:14 CEST 2016 +#Sun Nov 12 12:19:18 CET 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/readmoretextview/build.gradle b/readmoretextview/build.gradle index 2844c16..1fefb5e 100644 --- a/readmoretextview/build.gradle +++ b/readmoretextview/build.gradle @@ -6,18 +6,18 @@ publish { groupId = 'com.borjabravo' uploadName = 'ReadMoreTextView' artifactId = 'readmoretextview' - publishVersion = '2.0.1' + publishVersion = '2.1.0' desc = 'A Custom TextView with trim text' website = 'https://github.com/bravoborja/ReadMoreTextView' } android { - compileSdkVersion 25 - buildToolsVersion "25.0.2" + compileSdkVersion 27 + buildToolsVersion '27.0.0' defaultConfig { - minSdkVersion 9 - targetSdkVersion 25 + minSdkVersion 14 + targetSdkVersion 27 versionCode 1 versionName "1.0" } @@ -28,6 +28,6 @@ android { } dependencies { - compile 'com.android.support:support-compat:25.3.1' - testCompile 'junit:junit:4.12' + implementation 'com.android.support:support-compat:27.0.0' + 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 b74d027..f560151 100644 --- a/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java +++ b/readmoretextview/src/main/java/com/borjabravo/readmoretextview/ReadMoreTextView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 Borja Bravo Álvarez + * Copyright (C) 2016 Borja Bravo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,9 +30,6 @@ import android.view.ViewTreeObserver; import android.widget.TextView; -/** - * Created by borja on 17/4/16. - */ public class ReadMoreTextView extends TextView { private static final int TRIM_MODE_LINES = 0; From a4fd407d3aaa33bedac3bd2d049fc77bb3cf41f5 Mon Sep 17 00:00:00 2001 From: Borja Bravo Date: Sun, 12 Nov 2017 13:08:32 +0100 Subject: [PATCH 4/7] Update travis dependencies --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 798b3c9..7812812 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,8 @@ android: - tools - tools - platform-tools - - build-tools-25.0.2 - - android-25 + - build-tools-27.0.0 + - android-27 - extra-android-m2repository before_cache: From 733413c988acd844d38fc110f2cf217be8f185e3 Mon Sep 17 00:00:00 2001 From: "milan.r" Date: Wed, 22 Nov 2017 11:01:18 +0800 Subject: [PATCH 5/7] ADD: Support for styling collapsed/expanded text --- .../readmoretextviewsample/MainActivity.java | 4 +++- app/src/main/res/layout/activity_main.xml | 17 ++++++++++++----- app/src/main/res/values/styles.xml | 13 +++++++++++++ .../readmoretextview/ReadMoreTextView.java | 17 +++++++++++++++++ readmoretextview/src/main/res/values/attrs.xml | 6 ++++-- 5 files changed, 49 insertions(+), 8 deletions(-) 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..b92bce8 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" /> + 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/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 From d1604dc6afdf1f9de430a0b3fbca9d5b62d2a31c Mon Sep 17 00:00:00 2001 From: "milan.r" Date: Wed, 22 Nov 2017 11:14:03 +0800 Subject: [PATCH 6/7] ADD: Read me for expandedTextAppearance and collapsedTextAppearance ADD: Missing topMargin in the sample UPT: Build tool and support library version --- README.md | 2 ++ app/build.gradle | 6 +++--- app/src/main/res/layout/activity_main.xml | 1 + readmoretextview/build.gradle | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) 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/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b92bce8..158c17a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -34,6 +34,7 @@ android:id="@+id/text4" android:layout_width="wrap_content" android:layout_height="wrap_content" + 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" /> 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 From a03573e12bfc0fce5a23f68a7d6814bc153c633c Mon Sep 17 00:00:00 2001 From: "milan.r" Date: Wed, 22 Nov 2017 15:33:03 +0800 Subject: [PATCH 7/7] UPT: Build config to updated build tools --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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