When adding a BulletSpan to an EditText, the size of the EditText is not increased with the leading space added by the bullet. This leads to wrapping or scrolling of the text out of sight.
Sofar I have not been able to force the EditText to remeasure its width correctly.
Unfortunately I have not enough reputation to illustrate the situation. Let me try to describe the situation.
When adding the BulletSpan to the underlying Editable of an EditText, the resulting larger paragraph scrolls behind the right edge.
|0123456789| -> | • 0123456|789
The last characters are scrolled behind the right edge.
When the altered editable is assigned to an EditText, the width of the field remains the same and the wider text wraps.
|0123456789| -> | • 0123456| | 789 |
In both cases the EditText does not compensate its width for the leading space.
Adding extra characters at end of paragraph
| • 0123456789xxx| | xxx |
When adding characters to the EditText, the size of the field increases as expected, but does not take the added space of the bullet and its margin into account and keeps wrapping.
Several questions on BulletSpans have been asked, but not before on this weird behaviour. For two days, I've tried many layout setting in xml and many options in code to no avail unfortunately.
Does anyone have a suggestion?
Code: MainActivity.java
mToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean showBullet) {
final Editable editable = mEditText1.getText();
if (showBullet) {
// Add bullet
editable.setSpan(new BulletSpan(50), 0, editable.length(), Spannable.SPAN_PARAGRAPH);
} else {
// Remove bullet
BulletSpan[] spans = editable.getSpans(0, editable.length(), BulletSpan.class);
if (spans.length > 0) {
editable.removeSpan(spans[0]);
}
}
// See what happens when assigning the editable to an other TextView
mEditText2.setText(editable);
}
});
Layout: activity_main.xml (partly)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<!-- ToggleButton and TextView removed -->
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:inputType="textMultiLine"
android:text="0123456789" />
Try to override
BulletSpan
methods and change its implementation :