发表于 7 天前

Android Studio 中笔墨巨细的单位详解

在 Android 开发中,设置笔墨巨细是一个常见的需求。Android 提供了多种单位来界说笔墨巨细,每种单位都有其特定的使用场景和特点。下面我将具体先容 Android 中可用的笔墨巨细单位及其最佳实践。
https://i-blog.csdnimg.cn/direct/dcfc773ca502498780b9a23ef0b050df.png
一、Android 中的尺寸单位

https://i-blog.csdnimg.cn/direct/df2c7130ee764a3f8f73f9f5fd3c97b7.png
1. dp (Density-independent Pixels - 密度无关像素)



[*]界说:基于屏幕物理密度的抽象单位
[*]盘算公式:px = dp * (dpi / 160)
[*]使用场景:重要用于非笔墨元素的尺寸(如布局、边距等)
[*]示例:16dp 的按钮高度
<Button
    android:layout_width="wrap_content"
    android:layout_height="48dp" />
2. sp (Scale-independent Pixels - 可缩放像素)



[*]界说:雷同于 dp,但会根据用户的字体巨细偏好举行缩放
[*]特点:

[*]是设置笔墨巨细的首选单位
[*]会恭敬用户在体系设置中调解的字体巨细

[*]使用场景:全部笔墨巨细的设置
[*]示例:16sp 的文本巨细
<TextView
    android:textSize="16sp"
    android:text="Hello World" />
3. px (Pixels - 像素)



[*]界说:实际屏幕像素
[*]缺点:

[*]在差别密度的装备上表现结果不同等
[*]不保举使用

[*]使用场景:少少数必要准确控制像素的环境
<!-- 不推荐的做法 -->
<TextView
    android:textSize="24px" />
4. pt (Points - 磅)



[*]界说:1/72 英寸
[*]特点:

[*]基于物理尺寸
[*]在 Android 中使用较少

[*]使用场景:必要与印刷品保持同等的尺寸时
<TextView
    android:textSize="12pt" />
5. mm (Millimeters - 毫米) 和 in (Inches - 英寸)



[*]界说:基于物理尺寸的单位
[*]使用场景:少少使用,特殊需求场景
<TextView
    android:textSize="5mm" />
二、笔墨巨细单位的最佳实践

https://i-blog.csdnimg.cn/direct/ca2bb578b9154498b9750998dc359321.png
1. 始终使用 sp 作为笔墨巨细单位

原因:


[*]恭敬用户的字体巨细偏好(用户在体系设置中可以调解字体巨细)
[*]在差别装备上保持同等的阅读体验
[*]是 Material Design 的保举做法
示例:
<!-- 推荐 -->
<TextView
    android:textSize="16sp" />

<!-- 不推荐 -->
<TextView
    android:textSize="16dp" />
2. 使用尺度笔墨巨细门路

Material Design 保举使用以下笔墨巨细(单位为 sp):
样式种别巨细 (sp)使用场景Display Large57超大标题Display Medium45大标题Display Small36标题Headline Large32重要标题Headline Medium28次级标题Headline Small24小标题Title Large22卡片标题Title Medium16列表项标题Title Small14小标题Body Large16正文Body Medium14次要正文Body Small12辅助笔墨Label Large14按钮笔墨Label Medium12小按钮笔墨Label Small11标签笔墨3. 在 styles.xml 中界说笔墨样式

最佳实践是将笔墨样式界说在 res/values/styles.xml 中:
<style name="TextAppearance.Headline">
    <item name="android:textSize">24sp</item>
    <item name="android:fontFamily">sans-serif-medium</item>
    <item name="android:textColor">?attr/colorOnBackground</item>
</style>

<style name="TextAppearance.Body">
    <item name="android:textSize">16sp</item>
    <item name="android:fontFamily">sans-serif</item>
    <item name="android:textColor">?attr/colorOnBackground</item>
</style>
然后在布局中引用:
<TextView
    style="@style/TextAppearance.Headline"
    android:text="This is a headline" />
4. 思量差别屏幕尺寸和方向

对于差别屏幕配置,可以创建差别的资源文件:


[*]res/values/dimens.xml - 默认尺寸
[*]res/values-sw600dp/dimens.xml - 7英寸平板
[*]res/values-sw720dp/dimens.xml - 10英寸平板
[*]res/values-land/dimens.xml - 横屏模式
三、常见问题与办理方案

https://i-blog.csdnimg.cn/direct/9b79693ea70a4c34a13532d9f8cd045e.png
1. 笔墨巨细不随体系设置变化

问题:使用了 dp 而不是 sp 作为笔墨单位
办理:将全部笔墨巨细单位改为 sp
2. 笔墨在差别装备上表现不同等

问题:大概使用了 px 或没有思量屏幕密度
办理:


[*]使用 sp 作为笔墨单位
[*]使用 Material Design 的尺度尺寸门路
[*]为差别屏幕尺寸提供备用资源
3. 笔墨截断或溢出

问题:固定尺寸容器中的笔墨过长
办理:


[*]使用 wrap_content 作为视图尺寸
[*]添加 android:maxLines 和 android:ellipsize 属性
[*]思量使用 autoSizeTextType 主动调解笔墨巨细
<TextView
    android:textSize="16sp"
    android:maxLines="2"
    android:ellipsize="end" />
4. 多语言支持问题

问题:某些语言的笔墨比其他语言占用更多空间
办理:


[*]避免硬编码尺寸
[*]为差别语言提供备用字符串资源
[*]测试重要语言的布局
四、代码示例

1. 在 XML 中设置笔墨巨细

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sample Text"
    android:textSize="16sp" />
2. 在 Java/Kotlin 中动态设置笔墨巨细

Java:
TextView textView = findViewById(R.id.text_view);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
Kotlin:
val textView = findViewById<TextView>(R.id.text_view)
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
3. 使用 Material Components 的笔墨样式

<com.google.android.material.textview.MaterialTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Material Text"
    style="@style/TextAppearance.MaterialComponents.Headline6" />
五、总结


[*]首选单位:始终使用 sp 作为笔墨巨细的单位
[*]遵照尺度:接纳 Material Design 的笔墨巨细门路
[*]样式分离:在 styles.xml 中界说笔墨样式而非硬编码
[*]相应式筹划:为差别屏幕配置提供备用资源
[*]可访问性:确保笔墨巨细可以随体系设置调解
通过合理使用笔墨巨细单位,可以创建出在各种装备上都能提供精良阅读体验的 Android 应用。记着,笔墨巨细的选择不但关乎雅观,也直接影相应用的可访问性和用户体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Android Studio 中笔墨巨细的单位详解