Quero especificar meu próprio tamanho de texto no meu aplicativo, mas estou tendo problemas para fazer isso.
Quando altero o tamanho da fonte nas configurações do dispositivo, o tamanho da fonte do meu aplicativo TextView
também muda.
android
android-layout
textview
android-fonts
Vikasdeep Singh
fonte
fonte
Respostas:
Na verdade, o tamanho da fonte Configurações afeta apenas tamanhos
sp
. Então, tudo que você precisa fazer - definatextSize
emdp
vez desp
e as configurações não mudarão o tamanho do texto no seu aplicativo.Aqui está um link para a documentação: Dimensões
No entanto, observe que o comportamento esperado é que as fontes em todos os aplicativos respeitem as preferências do usuário. Há muitos motivos pelos quais um usuário pode querer ajustar o tamanho da fonte e alguns deles podem até ser usuários com deficiência visual. Usar em
dp
vez desp
texto pode levar a discriminação involuntária contra alguns dos usuários do seu aplicativo.ou seja:
fonte
sp
e quando devo usardp
. Eu recebi uma resposta muito boa aqui: stackoverflow.com/questions/11638691/…O mais fácil é simplesmente usar algo como o seguinte:
Se você quiser saber mais sobre a
textSize
propriedade, verifique a documentação do desenvolvedor do Android .fonte
Use o
dimension
tipo de recursos como você usa osstring
recursos ( DOCS ).No seu
dimens.xml
arquivo, declare suas variáveis de dimensão:Então você pode usar estes valores assim:
Você pode declarar diferentes
dimens.xml
arquivos diferentes para diferentes tipos de telas. Isso garantirá a aparência desejada do seu aplicativo em diferentes dispositivos.Quando você não especifica,
android:textSize
o sistema usa os valores padrão.fonte
Observe também que, se o textSize estiver definido no código, a chamada
textView.setTextSize(X)
interpretará o número (X) como SP. UsesetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
para definir valores em dp .fonte
Não é recomendável especificar DIP ou SP novamente por código, quando já definido em um arquivo dimen.xml.
Eu acho que a melhor opção é usar o PX ao usar um valor dimen.xml:
Dessa forma, você pode alternar do DP para o SP, se necessário, no arquivo dimen.xml, sem precisar alterar nenhum código.
fonte
Uma maneira simples de impedir que todo o aplicativo seja afetado pelo tamanho da fonte do sistema é atualizar a Configuração usando uma atividade base.
fonte
isso pode ajudar. adicione o código no seu Application ou BaseActivity personalizado
no entanto, o recurso # updateConfiguration é duplicado no nível 25 da API, o que significa que não será suportado algum dia no futuro.
fonte
Você pode usar este código:
resolve o seu problema, mas você deve saber que deve respeitar as decisões do usuário. por isso, alterar o tamanho do texto nas configurações do dispositivo não altera esse valor. é por isso que você precisa usar sp em vez de dp . Portanto, minha sugestão é revisar seu aplicativo com diferentes tamanhos de fonte do sistema (pequeno, normal, grande, ...)
fonte
para kotlin, funciona para mim
fonte
alterar o DP para sp é uma boa prática para android android: textSize = "18sp"
fonte
Se as unidades usadas são SP, não DP, e você deseja substituir o dimensionamento da fonte do sistema, tudo o que você faz é substituir um método em atividade - consulte esta postagem .
resources.updateConfiguration está obsoleto e com erros (no Oreo, tive problemas com o texto formatado).
fonte
Substituir
getResources()
na Atividade.Defina o tamanho do TextView em sp como de costume, como
android:textSize="32sp"
fonte
no android 8 esta solução funciona para mim
adicione este código na atividade base
fonte https://stackoverflow.com/a/57225687/7985871
fonte