Estou tentando adicionar um pouco de espaço entre as linhas aos meus TextViews usando android:lineSpacingMultiplier
a documentação :
Espaçamento extra entre linhas de texto, como um multiplicador.
Deve ser um valor de ponto flutuante, como "1,2".
Como estou usando isso em alguns TextViews diferentes, gostaria de adicionar uma dimensão / valor global aos meus recursos, mas não sei qual tag usar, se ela existir. Eu tentei todos os tipos de recursos que fazem sentido para mim, mas nenhum deles funciona.
O que eu gostaria de ter seria algo como isto:
<resources>
<dimen name="text_line_spacing">1.4</dimen>
</resources>
Edit: Estou ciente de android:lineSpacingExtra
(que precisa de uma dimensão com uma unidade anexada), mas eu gostaria de usar, android:lineSpacingMultiplier
se possível.
<item type="string" format="float" name="my_float">0.5</item>
e este código para recuperá-lo:float my_float = Float.parseFloat (getResources ().getString (R.string.my_float));
<string>
tag?Conforme descrito neste link http://droidista.blogspot.in/2012/04/adding-float-value-to-your-resources.html
Declarar em dimen.xml
Referenciando xml
Referenciando de java
fonte
Todas as soluções sugerem que você use o valor flutuante predefinido por meio do código.
Mas caso você esteja se perguntando como fazer referência ao valor flutuante predefinido em XML (por exemplo, layouts), a seguir é apresentado um exemplo do que fiz e está funcionando perfeitamente:
Defina os valores dos recursos como
type="integer"
masformat="float"
, por exemplo:E depois use-os no seu layout usando
@integer/name_of_resource
, por exemplo:fonte
<dimen>
Também encontrei uma solução alternativa que parece funcionar bem sem avisos:
Então:
Atenção : ele só funciona quando você usa o dimen do código Java e não do xml
fonte
type="fraction"
para evitar erros no código Java #Adicione um float ao dimens.xml:
<item format="float" name="my_dimen" type="dimen">1.2</item>
Para fazer referência a partir do XML:
Para ler esse valor programaticamente, você pode usar a
ResourcesCompat.getFloat
partir androidx.coreDependência Gradle:
implementation("androidx.core:core:${version}")
Uso:
fonte
Também podemos usá-lo como orientação do layout de restrição.
Crie o arquivo integer.xml e inclua no
Use de um arquivo layout.xml
fonte
Eu usei um estilo para resolver esse problema. O link oficial está aqui .
Coisas bastante úteis. Você cria um arquivo para armazenar seus estilos (como "styles.xml") e os define dentro dele. Você então faz referência aos estilos no seu layout (como "main.xml").
Aqui está um estilo de amostra que faz o que você deseja:
Digamos que você queira alterar um TextView simples com isso. No seu arquivo de layout, você digitaria:
Experimente - é essencialmente assim que toda a interface do usuário é feita no Android. E, usando estilos, você tem a opção de modificar todos os tipos de outros aspectos de suas visualizações também.
fonte
Se você possui flutuadores simples dos quais controla o intervalo, também pode ter um número inteiro nos recursos e dividir pelo número de casas decimais necessárias no código.
Então, algo assim
é usado com 2 casas decimais
e isso torna 3.56f
Não dizendo que esta é a solução mais elegante, mas para projetos simples, é conveniente.
fonte
Eu encontrei uma solução, que funciona, mas resulta em um
Warning
(WARN/Resources(268): Converting to float: TypedValue{t=0x3/d=0x4d "1.2" a=2 r=0x7f06000a}
) no LogCat.fonte
Embora eu tenha usado a resposta aceita no passado, parece que com as ferramentas de compilação atuais é possível:
Estou usando a versão principal do Build Tools 29.
fonte