AutoFitTextView icon indicating copy to clipboard operation
AutoFitTextView copied to clipboard

AutoResizeTextView doesn't wrap content when has new line character in the string ('\n')

Open overcomer opened this issue 7 years ago • 8 comments

I use AutoResizeTextView and set the string in strings.xml such as "This is a string\nwith new line character". The string will displayed as a very small text.

I think the issue is in isValidWordWrap method, it doesn't include (before == '\n') as a valid word wrap. I have tested by adding (before == '\n') in isValidWordWrap method as following:

public boolean isValidWordWrap(char before, char after) {
      return before == ' ' || before == '-' || before == '\n';
}

And it will work as expected.

overcomer avatar Sep 27 '16 01:09 overcomer

The idea is that the TextView will wrap the text automatically for you, so there is no use for "\n" , and therefore no need to check for it. Do you think I should add this?

AndroidDeveloperLB avatar Sep 27 '16 05:09 AndroidDeveloperLB

I agree with overcomer, I am displaying content from a server that sometimes contains new line characters.

I have modified the isValidWordWrap method as above.

tagy avatar Nov 21 '16 10:11 tagy

Also having a '\n' at the end of the string throws a StringIndexOutOfBoundsException.

I updated the isValidWordWrap to remove the second unused parameter:

public boolean isValidWordWrap(char before) { return before == ' ' || before == '-' || before == '\n'; }

and the call to this method:

if (i < lineCount - 1 && end > 0 && !isValidWordWrap(text.charAt(end - 1)))

This seems to be working for me.

tagy avatar Nov 21 '16 11:11 tagy

You think I should add this fix? If so, can you please put a pull request?

AndroidDeveloperLB avatar Nov 28 '16 21:11 AndroidDeveloperLB

@tagy Can you please make a pull request?

AndroidDeveloperLB avatar Jan 16 '17 11:01 AndroidDeveloperLB

Hi, Sorry I have not been working on Android for a while. I will try to look at this again in a week or so and make a pull request.

tagy avatar Jan 23 '17 13:01 tagy

This issue is still exists in latest version also. can you have look on this. This works good even we may not check condition for **before == '\n'** also.

if (i < lineCount - 1 && end > 0 && !isValidWordWrap(text.charAt(end - 1)))

DhamodharanS avatar May 08 '17 14:05 DhamodharanS

guys if you have found a nice working solution, please do a PR and I will use it.

AndroidDeveloperLB avatar May 08 '17 18:05 AndroidDeveloperLB