O que estou tentando realizar é ter hiperlinks clicáveis no texto da mensagem exibido por um AlertDialog
. Enquanto a AlertDialog
implementação sublinha e colore alegremente quaisquer hiperlinks (definidos usando <a href="...">
o recurso de cadeia passado para Builder.setMessage
) fornecido, os links não se tornam clicáveis.
O código que estou usando atualmente se parece com isso:
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();
Gostaria de evitar o uso de um WebView
para exibir apenas um trecho de texto.
android
user-interface
hyperlink
custom-controls
Thilo-Alexander Ginkel
fonte
fonte
Respostas:
Se você está apenas mostrando algum texto e URL (s) na sua caixa de diálogo, talvez a solução seja mais simples
Como mostrado aqui http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink
fonte
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Eu realmente não gostei da resposta atualmente mais popular porque altera significativamente a formatação da mensagem na caixa de diálogo.
Aqui está uma solução que vinculará o texto da caixa de diálogo sem alterar o estilo do texto:
fonte
onCreateDialog
de umDialogFragment
. Só tinha de definir código clicável noonStart
dado queshow
tinha sido chamado para invocar o DialogFragmentsetMessage(R.string.something)
, não é necessário vincular explicitamente. Também não é necessário paracreate()
o objeto AlertDialog antes da chamadashow()
(ele pode ser chamado no Builder) e, comoshow()
retorna o objeto de diálogo, elefindViewById(android.R.id.message)
pode ser encadeado. Envolva tudo em uma tentativa de captura, apenas no caso de a exibição da mensagem não ser um TextView, e você tenha uma formulação concisa.Isso deve fazer com que as
<a href>
tags também sejam destacadas. Observe que acabei de adicionar algumas linhas ao código do empacotamento. então credito a elefonte
setMessage(R.string.cool_link)
trabalha com<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()
é a parte importante aqui, caso contrário, o URL não será clicável.Na verdade, se você quiser simplesmente usar uma string sem lidar com todas as visualizações, a maneira mais rápida é encontrar a visualização de texto da mensagem e vinculá-la:
fonte
JFTR, aqui vem a solução que eu descobri depois de algum tempo:
O about.xml correspondente emprestado como um fragmento das fontes do Android se parece com isso:
As partes importantes são definir linksClickable como true e setMovementMethod (LinkMovementMethod.getInstance ()).
fonte
setLinksClickable(true)
(acho que já era), massetMovementMethod(...)
fazia toda a diferença.Ao invés de ...
... agora uso:
fonte
Maneira mais simples:
fonte
Toda a resposta acima não removerá a tag html como, etc, se a string especificada contiver, tentei remover todas as tags, e isso funciona bem para mim
e o custom_dialog seria como;
O código acima removerá toda a tag html e mostra Exemplo como URL capaz de clicar em todos os outros no texto de formatação html especificado.
fonte
Eu não estava realmente satisfeito com as respostas atuais. Há duas coisas importantes quando você deseja hiperlinks clicáveis no estilo href dentro de um AlertDialog:
setMessage(…)
, pois somente as Visualizações permitem conteúdo HTML clicávelsetMovementMethod(…)
)Aqui está um exemplo mínimo de trabalho:
strings.xml
MyActivity.java
fonte
Eu verifiquei muitas perguntas e respostas, mas não funciona. Eu mesmo fiz. Este é o trecho de código em MainActivity.java.
Coloque essa tag em res \ values \ String.xml
fonte
Combinei algumas das opções discutidas acima para criar esta função que funciona para mim. passe o resultado para o método SetView () do construtor de diálogo.
fonte
Se você estiver usando um
DialogFragment
, esta solução deve ajudar.fonte
Para mim, a melhor solução para criar um diálogo de política de privacidade é:
verifique o exemplo de trabalho: link do aplicativo
fonte
Eu faço isso especificando a caixa de alerta em um recurso XML e carregando isso. Veja, por exemplo, o about.xml (consulte o ID ABOUT_URL) que é instanciado perto do final do ChandlerQE.java . As partes relevantes do código java:
fonte
Esta é a minha solução. Ele cria um link normal sem as tags html envolvidas e sem qualquer URL visível. Ele também mantém o design intacto.
fonte
A maneira mais fácil e mais curta é assim
Link para Android na caixa de diálogo
fonte