Lo que estoy tratando de lograr es tener hipervínculos en los que se pueda hacer clic en el texto del mensaje que se muestra con un AlertDialog
. Si bien la AlertDialog
implementación subraya y colorea felizmente los hipervínculos (definidos mediante <a href="...">
el recurso de cadena pasado Builder.setMessage
) suministrados, los enlaces no se pueden hacer clic.
El código que estoy usando actualmente se ve así:
new AlertDialog.Builder(MainActivity.this).setTitle(
R.string.Title_About).setMessage(
getResources().getText(R.string.about))
.setPositiveButton(android.R.string.ok, null)
.setIcon(R.drawable.icon).show();
Me gustaría evitar usar un WebView
solo para mostrar un fragmento de texto.
android
user-interface
hyperlink
custom-controls
Thilo-Alexander Ginkel
fuente
fuente
Respuestas:
Si solo muestra algo de texto y URL [s] en su diálogo, tal vez la solución sea más simple
Como se muestra aquí http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink
fuente
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Realmente no me gustó la respuesta más popular actualmente porque cambia significativamente el formato del mensaje en el cuadro de diálogo.
Aquí hay una solución que vinculará el texto del diálogo sin cambiar el estilo del texto:
fuente
onCreateDialog
de aDialogFragment
. Sólo tenía que programar un nuevo código se puede hacer clic enonStart
Teniendo en cuenta queshow
había sido llamado para invocar el DialogFragmentsetMessage(R.string.something)
, no es necesario vincular explícitamente. Tampoco es necesario paracreate()
el objeto AlertDialog antes de llamarshow()
(se puede invocar en el generador ), y dado queshow()
devuelve el objeto de diálogo,findViewById(android.R.id.message)
se puede encadenar. Envuélvelo todo en un try-catch en caso de que la vista del mensaje no sea TextView y tengas una formulación concisa.Esto debería hacer que las
<a href>
etiquetas se resalten también. Tenga en cuenta que acabo de agregar algunas líneas al código de emmby. así que acéptalofuente
setMessage(R.string.cool_link)
funciona con<string name="cool_link"><a href="http://www.google.com">Check this link out</a></string>
Html.fromHtml("string with links", Html.FROM_HTML_MODE_LEGACY)
setMovementMethod()
es la parte importante aquí, de lo contrario no se podrá hacer clic en la URL.En realidad, si desea simplemente usar una cadena sin ocuparse de todas las vistas, la forma más rápida es encontrar la vista de texto del mensaje y vincularlo:
fuente
JFTR, aquí viene la solución que descubrí después de un tiempo:
El about.xml correspondiente prestado como un fragmento de las fuentes de Android se ve así:
Las partes importantes son establecer linksClickable a true y setMovementMethod (LinkMovementMethod.getInstance ()).
fuente
setLinksClickable(true)
(supongo que ya lo era), perosetMovementMethod(...)
marcó la diferencia.En vez de ...
... ahora uso:
fuente
La forma más simple:
fuente
Toda la respuesta anterior no eliminará la etiqueta html como, etc. si la cadena dada contiene, intenté eliminar todas las etiquetas, y esto funciona bien para mí
y el custom_dialog sería como;
El código anterior eliminará todas las etiquetas html y muestra el Ejemplo como URL capaz de hacer clic en todas las demás en el texto de formato html especificado.
fuente
No estaba realmente satisfecho con las respuestas actuales. Hay dos cosas que son importantes cuando desea hipervínculos clicables en estilo href dentro de un AlertDialog:
setMessage(…)
, ya que solo las Vistas permiten contenido HTML en el que se puede hacer clicsetMovementMethod(…)
)Aquí hay un ejemplo mínimo de trabajo:
strings.xml
MyActivity.java
fuente
He revisado muchas preguntas y respuestas, pero no funciona. Lo hice yo mismo. Este es el fragmento de código en MainActivity.java.
Pon esta etiqueta en res \ values \ String.xml
fuente
Combiné algunas de las opciones discutidas anteriormente para crear esta función que funciona para mí. pasar el resultado al método SetView () del generador de diálogo.
fuente
Si está utilizando a
DialogFragment
, esta solución debería ayudar.fuente
Para mí, la mejor solución para crear un diálogo de política de privacidad es:
verifique el ejemplo de trabajo: enlace de la aplicación
fuente
Hago esto especificando el cuadro de alerta en un recurso XML y cargando eso. Consulte, por ejemplo, el about.xml (consulte el ID ABOUT_URL) que se instancia cerca del final de ChandlerQE.java . Las partes relevantes del código de Java:
fuente
Esta es mi solución Crea un enlace normal sin etiquetas html involucradas y sin ninguna URL visible. También mantiene el diseño intacto.
fuente
La forma más fácil y más corta es así
Enlace de Android en diálogo
fuente