首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML不同于计算dp (dip)

XML不同于计算dp (dip)
EN

Stack Overflow用户
提问于 2017-03-17 08:43:23
回答 3查看 200关注 0票数 2

在我的xml中,TextView上有这样的内容:

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

我还有一些正在以编程方式创建的TextViews,并将TextSize设置为:

代码语言:javascript
复制
view.TextSize = TypedValue.ApplyDimension(ComplexUnitType.Dip, 18, Resources.DisplayMetrics);

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-17 08:56:41

您应该使用setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize);因为getDimension方法的文档声明它返回一个资源维度值乘以适当的度量。我知道这是预先计算出来的绝对px值。

也就是说,使用:

代码语言:javascript
复制
    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.text_size_small));
票数 1
EN

Stack Overflow用户

发布于 2017-03-17 08:58:20

尝尝这个

代码语言:javascript
复制
text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

Or

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));
票数 0
EN

Stack Overflow用户

发布于 2017-03-17 09:50:30

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

dimens.xml

代码语言:javascript
复制
<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="text_size">18dp</dimen>

</resources>

从text_size中获取dimens.xml,如下所示:

代码语言:javascript
复制
textView.setTextSize(getResources().getDimension(R.dimen.text_size));

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

代码语言:javascript
复制
int text_size = getResources().getDimension(R.dimen.text_size);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42852834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档