2017-03-17 10 views
1

In meinem xml habe ich dies auf einem Textview:XML dp anders berechnet dp (dip)

android:textSize="18dp" (ja ich weiß, dp für Text nicht vorzuziehen ist, aber das ist nebensächlich)

Ich habe einige andere Textviews, dass ich die Schaffung programmatisch, und ich bin mit dem Textsize als solche Einstellung:

view.TextSize = TypedValue.ApplyDimension(ComplexUnitType.Dip, 18, Resources.DisplayMetrics); 

Allerdings haben diese Textgröße (die erstellt programmatisch) erscheint viel größer ist als die XML-Version zu sein. Ich frage mich warum? :)

+0

siehe meine Antwort mit Wert definieren in dimens.xml Datei. –

Antwort

0

Sie sollten setTextSize (TypedValue.COMPLEX_UNIT_PX, textSize); Die Dokumentation der Methode "getDimension" gibt an, dass sie einen Ressourcenbemaßungswert multipliziert mit der entsprechenden Metrik zurückgibt. was ich als den vorberechneten absoluten px-Wert verstehe.

Das heißt, verwenden:

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.text_size_small)); 
+0

Oh, richtig, habe ich völlig falsch verstanden. Natürlich brauche ich den Pixelwert :) – HelloWorld

0

Versuchen Sie, diese

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14); 

Or 

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font)); 
+0

Ich möchte wirklich dp verwenden und genau 18dp bekommen, aber ich glaube nicht, dass das obige das tut? – HelloWorld

0

Sie benötigen Textgröße in Dimension in dimens.xml Wert Ordner deklarieren und diesen Wert erhalten und es Ihre TextView wie unten Code festgelegt.

dimens.xml

<resources> 
    <!-- Default screen margins, per the Android Design guidelines. --> 
    <dimen name="text_size">18dp</dimen> 

</resources> 

Get TEXT_SIZE von dimens.xml wie unten Code:

textView.setTextSize(getResources().getDimension(R.dimen.text_size)); 

// Unten Zeile kehrt in Pixel dp Wert.

int text_size = getResources().getDimension(R.dimen.text_size); 
+0

18dp ist nicht unbedingt was ich will. Was ist, wenn x dp nur zur Laufzeit bekannt ist? Z.B. in Code? – HelloWorld

+0

Sie müssen Wert von 18 dpi in Java-Code zur Laufzeit wissen –

+0

Wenn wir 'dp' Wert wie oben Code erhalten, gibt es einen Pixelwert von' x dp ', die wir in dimens.xml deklarieren –

Verwandte Themen