我可以在 TextView 中使用 Spannable 创建具有不同外观、下划线、删除线等的跨度。我怎样才能做同样的事情来改变换行行为?特别是,我不希望电子邮件地址在中间换行,我希望它像一个单词一样。
I tried 包裹在一起跨度 http://developer.android.com/reference/android/text/style/WrapTogetherSpan.html,但我无法让它发挥作用。看起来它只被DynamicLayout使用,我无法强制TextView使用DynamicLayout。
<TextView
android:id="@+id/merchant_email_field"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/account_setting_email"
android:gravity="center"
android:bufferType="spannable"
android:maxLines="2"
android:ellipsize="end"
/>
我如何设置跨度:
WrapTogetherSpan TOGETHER_SPAN = new WrapTogetherSpan() {};
String collectedString = getString(R.string.email_sentence, userEmail);
int emailOffset = collectedString.indexOf(userEmail);
Spannable emailSpannable = Spannable.Factory.getInstance()
.newSpannable(collectedString);
emailSpannable.setSpan(TOGETHER_SPAN, emailOffset,
emailOffset + userEmail.length(),
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(emailSpannable)
不知道您是否找到了答案,但您可以使用 unicode 来帮助您。
有一个不可破坏的空格字符,因此您需要将所有想要不可破坏的空格替换为该字符(\u00A0)
举个例子
String text = "Hello World";
text.replace(' ', '\u00A0');
textView.setText(text);
顺便说一句,我一直在寻找跨度解决方案,但找不到,包裹在一起跨度只是一个接口,所以它不起作用......
但通过这种方法,我相信如果您愿意,您可以定制一个牢不可破的跨度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)