XML dp与计算dp(dip)不同

时间:2017-03-17 08:43:24

标签: android xamarin

在我的xml中,我在TextView上有这个:

android:textSize="18dp"(是的,我知道dp不适合文字,但这不是重点)

我还有其他一些我以编程方式创建的TextView,我正在设置TextSize:

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

但是,后一种文本大小(以编程方式创建的大小)似乎比XML版本大得多。我想知道为什么? :)

3 个答案:

答案 0 :(得分:1)

你应该使用setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize);因为getDimension方法的文档声明它返回Resource维值乘以适当的度量。我理解为预先计算的绝对px值。

即,使用:

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

答案 1 :(得分:0)

试试这个

<meta name="viewport" content="width=device-width, initial-scale=1">

答案 2 :(得分:0)

您需要在值文件夹的dimens.xml中的维度中声明文字大小并获取该值并将其设置为TextView,如下所示。

<强> dimens.xml

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

</resources>

dimens.xml获取text_size,如下所示代码:

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

//下面的行以像素为单位返回dp值。

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