Puedo usar Spannable en TextViews para crear tramos con diferentes apariencias, subrayados, tachaduras y demás. ¿Cómo puedo hacer lo mismo para alterar el comportamiento del ajuste de línea? En particular, no quiero que una dirección de correo electrónico se envuelva en el medio, quiero que actúe como una palabra.Modificación del comportamiento de alineación de línea
Intenté WrapTogetherSpan, pero no pude hacerlo funcionar. Parece que solo lo usa DynamicLayout, y no pude forzar que TextView utilizara 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"
/>
Cómo estoy estableciendo el spannable:
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)
No, porque quiero un máximo de dos líneas. Solo quiero que la dirección de correo electrónico se una como una sola palabra. – pforhan
Disculpas, no entendí eso antes. Tiene mucho más sentido ahora por qué estabas tratando de hacerlo con un spannable. :) – Barak