titulo studio programacion poner nombre name móviles desarrollo curso change cambiar bar aplicaciones activity android text hyperlink launch

programacion - poner titulo android studio



Android: Iniciar actividad desde texto pulsable (3)

¿Hay alguna forma en que pueda iniciar una actividad desde una parte de una cadena?

Por ejemplo, tengo esto en mi archivo strings.xml:

<string name="clickable_string">This is a <u>clickable string</u></string>

Me gustaría que el texto entre las etiquetas de u esté subrayado e inicie una actividad al hacer clic cuando se inserta en un TextView


Prueba esto,

final Context context = ... // whereever your context is CharSequence sequence = Html.fromSource(context.getString(R.string.clickable_string)); SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence); UnderlineSpan[] underlines = strBuilder.getSpans(UnderlineSpan.class); for(UnderlineSpan span : underlines) { int start = strBuilder.getSpanStart(span); int end = strBuilder.getSpanEnd(span); int flags = strBuilder.getSpanFlags(span); ClickableSpan myActivityLauncher = new ClickableSpan() { public void onClick(View view) { context.startActivity(getIntentForActivityToStart()); } }; strBuilder.setSpan(myActivityLauncher, start, end, flags); } TextView textView = ... textView.setText(strBuilder); textView.setMovementMethod(LinkMovementMethod.getInstance());

Básicamente, tiene que adjuntar un objeto Span al rango de caracteres que desea que se pueda hacer clic. Ya que está utilizando HTML de todos modos, puede usar los intervalos de subrayado colocados por Html.fromSource () como marcadores para sus propios intervalos.

Alternativamente, también puede definir una etiqueta dentro de la cadena que solo usted conoce. es decir, <activity> Y suministre su propio controlador de etiquetas al método Html.fromSource (). De esta manera, su instancia de TagHandler podría hacer algo como rodear el texto etiquetado con un color específico, subrayado, en negrita y hacer que se pueda hacer clic. Sin embargo, solo recomendaría el enfoque de TagHandler si se encuentra escribiendo mucho este tipo de código.


Respondido aquí Haga que se pueda hacer clic en partes de la vista de texto (no url) Acabo de hacer una modificación si desea usarla con un mensaje HTML, haga lo siguiente En su función de visualización

public void displayText(String message) { chapterTextView.setText(Html.fromHtml(message),TextView.BufferType.SPANNABLE); chapterTextView.setMovementMethod(LinkMovementMethod.getInstance()); Spannable clickableMessage = (Spannable) chapterTextView.getText(); chapterTextView.setText(addClickablePart(clickableMessage), BufferType.SPANNABLE); }

La función modificada de addClickablePart

private SpannableStringBuilder addClickablePart(Spannable charSequence) { SpannableStringBuilder ssb = new SpannableStringBuilder(charSequence); int idx1 = charSequence.toString().indexOf("("); int idx2 = 0; while (idx1 != -1) { idx2 = charSequence.toString().indexOf(")", idx1) + 1; final String clickString = charSequence.toString().substring(idx1, idx2); ssb.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(getActivity(), clickString, Toast.LENGTH_SHORT).show(); } }, idx1, idx2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); idx1 = charSequence.toString().indexOf("(", idx2); } return ssb; }

Espero que esto ayude a alguien.


asigne esta cadena a uno de su diseño xml y luego en su código obtenga el ID de TextView y luego implemente OnClickListener para esta vista de texto, dentro de la cual puede comenzar la nueva actividad que desee.