android-autofittextview自适应字体大小源码分析。
2017-09-28 10:40
751 查看
https://github.com/grantland/android-autofittextview。
用法:
以单行为例:
每次都要计算一行的宽度,和实际的宽度对比,来调整字体大小,是变大还是变小。
限制多行的例子:
要麻烦一些。第一步,先从行数上逼近。
第二步,如果行数一样了,再逼近宽度。取所有行数最宽的作为比较对象。
用法:
<me.grantland.widget.AutofitTextView android:id="@+id/output_autofit" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/example" android:textSize="50sp" android:gravity="center" android:singleLine="true" autofit:minTextSize="8sp" />
mMaxTextSize = mTextSize;
mTextSize为xml中设置的字体大小。
if ((maxLines == 1 && paint.measureText(text, 0, text.length()) > targetWidth) || getLineCount(text, paint, size, targetWidth, displayMetrics) > maxLines) { size = getAutofitTextSize(text, paint, targetWidth, maxLines, low, high, precision, displayMetrics); }
以单行为例:
maxLineWidth = paint.measureText(text, 0, text.length());
每次都要计算一行的宽度,和实际的宽度对比,来调整字体大小,是变大还是变小。
限制多行的例子:
要麻烦一些。第一步,先从行数上逼近。
layout = new StaticLayout(text, paint, (int)targetWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true); lineCount = layout.getLineCount();
第二步,如果行数一样了,再逼近宽度。取所有行数最宽的作为比较对象。
for (int i = 0; i < lineCount; i++) { if (layout.getLineWidth(i) > maxLineWidth) { maxLineWidth = layout.getLineWidth(i); } }
相关文章推荐
- android---重写textview自适应屏幕分辨率,压缩字体大小
- Android textview自适应宽度自动调整字体大小
- AutoFitTextView(Android textview根据字体长度调整字体大小)
- Android: TextView 及其子类通过代码和 XML 设置字体大小的存在差异的分析
- android中为textview的内容分别设置字体大小
- Android TextView 动态改变字体颜色、大小
- Android textview 设置不同的字体大小和颜色
- Android中TextView中的字体大小设置
- Android的TextView中显示不同大小字体的玩法
- android在TextView中设置超链接,字体大小,字体颜色,图片
- 【Android】TextView中不同大小字体如何上下垂直居中?
- Android Studio第二十三期 - TextView自适应缩放大小 国外大神的library
- android小技巧之TextView设置不同字体大小及样式
- Android_硬编码设置TextView字体大小
- [Android]TextView设置字体大小时应该知道的事-同样的textSize不同的效果
- Android 自定义TextView实现文本内容自动调整字体大小
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- Android-TextView 默认字体大小
- Android 修改TextView中部分字体的颜色及大小
- android textview宽度固定的情况下字体大小自适应