Eu gostaria de poder atribuir um atributo ou estilo xml a um TextView
que criará o texto que tiver em TODAS AS LETRAS MAIÚSCULAS.
Os atributos android:inputType="textCapCharacters"
e android:capitalize="characters"
não fazer nada e olhar como eles são para o texto inputed usuário, não um TextView
.
Gostaria de fazer isso para separar o estilo do conteúdo. Eu sei que poderia fazer isso programaticamente, mas, novamente, quero manter o estilo fora do conteúdo e do código.
android
textview
capitalization
cottonBallPaws
fonte
fonte
Respostas:
Eu pensei que era uma solicitação bastante razoável, mas parece que você não pode fazer isso no momento. Que falha total. ri muito
Atualizar
Agora você pode usar textAllCaps para forçar todos os limites.
fonte
textAllCaps
causas aplicativo para falhar se você especificadoandroid:fontFamily
nothemes.xml
.E o android: textAllCaps ?
fonte
Usando AppCompat
textAllCaps
em aplicativos Android compatíveis com APIs antigas (menos de 14)Há um widget de interface do usuário que acompanha o AppCompat chamado CompatTextView é uma extensão Personalizada do TextView que adiciona suporte para textAllCaps
Para uma API Android mais recente> 14, você pode usar:
Um exemplo simples:
Fonte: developer.android
Atualizar:
fonte
CompatTextView
é usado noScrollingTabCointainerView
qual é usadoToolbarWidgetWrapper
, o que soa bem novo e contanto que o nome mantenha "v7" em seu nome, isso é uma garantia suficiente para mimCompatTextView
e permanecerá onde está.CompatTextView
foi substituído pelaAppCompatTextView
última biblioteca appcompat-v7. Você estava certo.É realmente muito decepcionante que você não possa fazê-lo com styles (
<item name="android:textAllCaps">true</item>
) ou em cada arquivo de layout XML com o atributo textAllCaps , e a única maneira de fazê-lo é realmente usando theString.toUpperCase () em cada uma das strings quando você o faz. um textViewXXX.setText (theString).No meu caso, eu não queria ter theString.toUpperCase () em qualquer lugar do meu código, mas ter um local centralizado para isso, porque eu tinha algumas atividades e lista layouts de itens com TextViews que deveriam estar em maiúsculas o tempo todo (um title) e outros que não o fizeram ... então ... algumas pessoas podem pensar que é um exagero, mas eu criei minha própria classe CapitalizedTextView estendendo android.widget.TextView e substitui o método setText colocando o texto em maiúscula.
Pelo menos, se o design mudar ou precisar remover o texto em maiúsculas em versões futuras, só preciso mudar para o TextView normal nos arquivos de layout.
Agora, considere que eu fiz isso porque o Designer do aplicativo realmente queria esse texto (os títulos) no CAPS em todo o aplicativo, independentemente da capitalização de conteúdo original, e também tive outros TextViews normais em que a capitalização veio com o conteúdo real .
Esta é a classe:
E sempre que você precisar usá-lo, apenas declare-o com todo o pacote no layout XML:
Alguns argumentam que a maneira correta de estilizar o texto em um TextView é usar um SpannableString , mas acho que isso seria um exagero ainda maior, além de consumir mais recursos, porque você instanciará outra classe que o TextView.
fonte
Eu vim com uma solução semelhante à do RacZo, no fato de que eu também criei uma subclasse
TextView
que lida com tornar o texto em maiúsculas.A diferença é que, em vez de substituir um dos
setText()
métodos, usei uma abordagem semelhante à queTextView
realmente faz na API 14+ (que é, no meu ponto de vista, uma solução mais limpa).Se você procurar a fonte , verá a implementação de
setAllCaps()
:A
AllCapsTransformationMethod
classe não é (atualmente) pública, mas ainda assim, a fonte também está disponível . Simplifiquei um pouco essa classe (removi osetLengthChangesAllowed()
método), então a solução completa é esta:fonte
Parece que há permissão na configuração do teclado móvel, portanto, a maneira mais fácil de fazer isso é:
espero que isso funcione
fonte
O projeto PixlUI permite que você use textAllCaps em qualquer visualização de texto ou subclasse de visualização de texto, incluindo: Botão, EditText AutoCompleteEditText Caixa de seleção RadioButton e vários outros.
Você precisará criar suas visualizações de texto usando a versão pixlui, e não as da fonte android, o que significa que você deve fazer isso:
O PixlUI também permite definir um tipo / fonte personalizado que você coloca na sua pasta de ativos.
Estou trabalhando em uma bifurcação Gradle da estrutura PixlUI que usa gradle e permite especificar textAllCaps, bem como o tipo de letra dos estilos, em vez de exigi-los em linha, como o projeto original.
fonte