Existe uma maneira de permitir que o usuário selecione / copie texto em um TextView? Preciso da mesma funcionalidade do EditText, onde você pode pressionar longamente o controle e obter as opções pop-up de selecionar todos / copiar, mas preciso que o controle se pareça com um TextView.
Tentei algumas coisas como fazer um EditText usar a opção editable = "none" ou inputType = "none", mas eles ainda mantêm o fundo emoldurado de um EditText, o que eu não quero,
obrigado
------- Atualizar ----------------------
Isso está 99% lá, tudo que eu quero é que o brilho da seleção seja visível (o material laranja). Fora isso, é bom, mas poderia viver com isso:
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
style="?android:attr/textViewStyle"
android:textColor="@color/white"
android:textAppearance="@android:style/TextAppearance.Medium"
android:cursorVisible="false"
android:background="@null" />
Eu acho que está sendo causado por cursorVisible = "false", mas sem que o cursor esteja presente, mesmo sem qualquer seleção sendo feita.
Respostas:
android: textIsSelectable funciona (pelo menos no ICS - ainda não verifiquei nas versões anteriores)
fonte
A visualização de texto precisa estar habilitada, focalizável, longClickable e textIsSelectable
fonte
textIsSelectable
não é suficiente? funciona para mim apenas com esta opçãotextview.setTextIsSelectable(true)
o código Java no código.textIsSelectableis
fazer o trabalho para mimtextIsSelectable
funciona para alguns casos, mas não para outros. Às vezes, o mesmo layout nem sempre funciona com apenas textIsSelectable, mas com um texto diferente. No entanto, essa solução não parece fazer com que funcione melhor, então o problema pode estar vindo de outro lugar.Acho que tenho uma solução melhor. Apenas ligue
registerForContextMenu(yourTextView);
e você
TextView
será registrado para receber eventos do menu de contexto.Em seguida, substitua
onCreateContextMenu
em seuActivity
Espero que isso ajude você e qualquer outra pessoa que esteja procurando uma maneira de copiar o texto de um
TextView
fonte
ClipboardManager.setText(CharSequence text)
foi descontinuado no nível de API 11. Use em seusetPrimaryClip(ClipData)
lugar. Isso cria um ClippedItem que contém o texto fornecido e o define como o clipe principal. Não tem rótulo ou ícone. Boa leitura sobre copiar e colar: linkIsso permitirá que o usuário selecione e copie o texto com um clique longo ou como fazemos normalmente
fonte
Estou tentando implementar o mesmo, e sua dúvida me ajudou a definir o layout do meu editexto corretamente. Então, obrigado! :)
Então percebi que o realce ficará realmente visível se o cursor estiver ativado. Mas eu assim como você não quero ver um cursor antes de clicar no texto, então eu oculto o cursor no arquivo layout.xml assim como você, e adicionei um eventlistener para um clique longo e exibo o cursor apenas quando uma seleção começa .
Portanto, adicione o listener em sua Activity na seção onCreate:
E voilá, nenhum cursor no início, e se você clicar longamente, o cursor aparecerá com os limites da seleção.
Espero poder ajudar.
Saúde, fm
fonte
Eu também estava tentando fazer algo semelhante, mas ainda precisava de uma abordagem personalizada com manipulação de destaque de texto em TextView. Eu acionei o destaque e a cópia em
LongClick
ação.Foi assim que consegui usar
SpannableString
:e a função de cópia:
Espero que seja útil para quem chega a esta questão :)
fonte
Usando Kotlin programaticamente (cópia manual)
Ou adicione uma extensão de propriedade Kotlin
Então ligue
Usando Kotlin programaticamente (cópia automática)
Se você deseja copiar automaticamente quando o usuário pressiona longamente em sua visualização, este é o código base necessário:
Você pode querer adicionar um
Toast
para confirmar que aconteceuOu adicione uma função de extensão Kotlin
Usando Xml (cópia manual)
Adicione isto ao seu
<TextView>
fonte
Basta usar esta biblioteca simples: GitHub: TextView selecionável
fonte