A chamada TextView.setTextSize()
está funcionando de maneira anormal. Logo após a chamada para setTextSize
se obtivermos um, getTextSize
ela retornará um valor muito mais alto do que o definimos anteriormente.
Aqui está o que estamos fazendo:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
Alguém viu isso antes?
Respostas:
A diferença aqui é que no
setTextSize(int size)
método, o tipo de unidade por padrão é "sp" ou "pixels dimensionados". Este valor será uma dimensão de pixel diferente para cada densidade de tela (ldpi, mdpi, hdpi).getTextSize()
, por outro lado, retorna as dimensões reais em pixels do texto.Você pode usar
setTextSize(int unit, float size)
para especificar um tipo de unidade. Os valores constantes para isso podem ser encontrados na classe TypedValue, mas alguns deles são:fonte
esse problema aconteceu porque o
getTextSize()
método retorna o tamanho em pixels que depende da densidade da tela! para obter o tamanho real do texto, use:Espero que resolva :)
fonte
setTextSize(int unit, float size)
。se definir alterar o tamanho da fonte, algo causa erro de exibição, você pode fazer o seguinte:
fonte
DIP
?Quando tentamos definir o problema de setText () programaticamente com getTextSize (), retorna o valor em px em vez de sp / dp / dip e sabemos 1sp / dp = 1.5px (tamanho da tela = 240).
está funcionando perfeitamente para mim ou podemos usar displaymatrix para proporção px: sp / dp e, em seguida, substituir esse valor por 1.5f
fonte
Depois de muito tempo acertou isso e finalmente resolveu assim
crie uma pasta dimen como este res / valores / dimensões.xml
fonte
Em suma, se você quiser diminuir o tamanho do seu texto
Como getTextSize () retorna UNIT_PX, então devemos usar UNIT_PX
fonte
Solução Kotlin
Para configurar usando um recurso, basta usar este:
Para fazer o mesmo com um valor de recurso, adicione esta propriedade de extensão para definir muito mais facilmente o tamanho do seu texto
fonte
Adicionando algum sabor extra para esta resposta, pois também gerou um pouco de confusão. Você deve ser capaz de inserir este teste em qualquer
@RunWith(AndroidJUnit4.class)
teste que tenha em seu projeto (você também precisará adicionar a dimensão ao seu dimens.xml).Observação: todos esses testes passam
A grande lição que descobri é que
TextView.setTextSize(float)
aplica o dimensionamento da fonte , então se você passar em um dimen que já está rotulado como SP em vez de DP, então ele receberá o dimensionamento da fonte duas vezes .fonte