package de.ankri.views;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.TextView;
import de.ankri.R;
/**
* A custom Text View that lowers the text size when the text is to big for the TextView. Modified version of one found on stackoverflow
*
* @author Andreas Krings - www.ankri.de
* @version 1.0
*
*/
public class AutoScaleTextView extends TextView
{
private Paint textPaint;
private float preferredTextSize;
private float minTextSize;
public AutoScaleTextView(Context context)
{
this(context, null);
}
public AutoScaleTextView(Context context, AttributeSet attrs)
{
this(context, attrs, R.attr.autoScaleTextViewStyle);
// Use this constructor, if you do not want use the default style
// super(context, attrs);
}
public AutoScaleTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
this.textPaint = new Paint();
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AutoScaleTextView, defStyle, 0);
this.minTextSize = a.getDimension(R.styleable.AutoScaleTextView_minTextSize, 10f);
a.recycle();
this.preferredTextSize = this.getTextSize();
}
/**
* Set the minimum text size for this view
*
* @param minTextSize
* The minimum text size
*/
public void setMinTextSize(float minTextSize)
{
this.minTextSize = minTextSize;
}
/**
* Resize the text so that it fits
*
* @param text
* The text. Neither <code>null</code> nor empty.
* @param textWidth
* The width of the TextView. > 0
*/
private void refitText(String text, int textWidth)
{
if (textWidth <= 0 || text == null || text.length() == 0)
return;
// the width
int targetWidth = textWidth - this.getPaddingLeft() - this.getPaddingRight();
final float threshold = 0.5f; // How close we have to be
this.textPaint.set(this.getPaint());
while ((this.preferredTextSize - this.minTextSize) > threshold)
{
float size = (this.preferredTextSize + this.minTextSize) / 2;
this.textPaint.setTextSize(size);
if (this.textPaint.measureText(text) >= targetWidth)
this.preferredTextSize = size; // too big
else
this.minTextSize = size; // too small
}
// Use min size so that we undershoot rather than overshoot
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, this.minTextSize);
}
@Override
protected void onTextChanged(final CharSequence text, final int start, final int before, final int after)
{
this.refitText(text.toString(), this.getWidth());
}
@Override
protected void onSizeChanged(int width, int height, int oldwidth, int oldheight)
{
if (width != oldwidth)
this.refitText(this.getText().toString(), width);
}
}访问更多请点击https://bitbucket.org/ankri/autoscaletextview/src/fd5625ceb37b5cf18b8bf1e0c3c20dca569de80d/src/de/ankri/views/?at=default
点击打开链接
相关推荐
ESP32实战:破解校园网WPA2-Enterprise认证的完整指南
本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。
自动调整TextView字体大小以适应文…
效果是 当字数少的时候 字体最大,随着字数的增多字体逐渐减小。 Java代码 0) { int availableWidth = textWidth - this.getPaddingLeft() - this.getPaddingRight(); float trySize = maxTextSize; testPaint.setTextSize(trySize); while ((
电磁仿真软件CST2020 下载链接及安装破·解教程笔记
众所周知,配环境是安装软件最头疼的事情。CST2020我调了一上午,网上现有的安装教程良莠不齐,很难有一篇文章能够全流程的讲述安装过程以及遇到的问题。正好今天我要给另一台电脑装软件,借此机会把安装过程记录下来,以供将来使用和他人借鉴。 首先提供下载地址: 百度网盘 链接:https://pan.baidu.com/s/1cDJZelufj-nliUfekMNpEA 提取码:8ihx 附: 根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软
短视频商城系统,Android TextView自动调整字体大小
短视频商城系统,Android TextView自动调整字体大小 1、自动缩放(当字少时放大,字多时缩小) 2、缩放范围(设置最大、最小和缩放粒度) 3、预设大小清单(1)添加预设清单(res/values/attrs.xml ) (2)使用预设清单 以上就是 短视频商城系统,Android TextView自动调整字体大小,更多内容欢迎关注之后的文章...
5060TI显卡深度学习环境搭建:CUDA12.8与CUDNN9.8.0的完美搭配
本文详细介绍了在Win10系统下为5060TI显卡搭建深度学习环境的最佳实践,重点配置CUDA12.8与CUDNN9.8.0的完美组合。通过优化OpenCV编译选项和YOLOv5环境设置,显著提升模型训练和推理效率,帮助开发者充分发挥5060TI显卡的性能潜力。
TC8:IPv4_HEADER_05-09
所有主机都必须准备好接受最多576个字节的数据报我们知道最大传输单元MTU通常是1500个字节,也就是说一条IP数据报的Header+payload最大1500,那为什么这条测试用例又要求主机准备好接受最多576个字节的IP数据报呢。
【Android】TextView字体大小自适应的方式
众所周知,同样的一个话在中英文环境中的字符长度是不一样的。如果TextView没有做相应的适配,那么在切换环境之后读取xml中文本会导致UI变样。尤其是英文文本容易展示不全的问题。
华为HCIP的学习大纲和计划
HCIP(华为认证 ICT 高级工程师)核心围绕华为 ICT 技术体系,不同方向(如路由交换、云计算、安全等)课程目录不同,以下是最热门的。
android开发 textview根据字数长度自动调整字体大小
import com.carspeak.client.util.DensityUtils; import android.content.Context; import android.graphics.Paint; import android.graphics.Paint.FontMetrics; import android.util.AttributeSet; import andro...
安全与加密常识(10)linux系统证书管理
1. 将自定义CA证书(如my-ca.crt)放到源目录# 2. 编辑配置文件,启用该证书(末尾添加一行 my-ca.crt)# 3. 执行命令同步(核心工作环节)# 4. 验证结果:检查是否生成哈希链接和合并到证书束ls /etc/ssl/certs/my-ca.pem # 证书文件ls /etc/ssl/certs/$(openssl x509 -hash -noout -in /usr/share/ca-certificates/my-ca.crt).0 # 哈希链接。
Claude桌面端安装失败?Retrying无限重试终极解决方案(亲测有效)
Claude桌面端安装卡在Retrying并非网络问题,而是安装器下载源异常导致。本文提供已验证方案:一条命令即可解决问题🚀
textview固定宽度,自动调整字体大小
fun setTextAutoSize(textView: TextView, text: String) { //设置textView固定宽度 val layoutParams = textView.layoutParams layoutParams.width = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 30f, .
基于深度学习的人脸识别考勤管理系统,采用YOLOv11和Dlib算法实现人脸识别和考勤签到,前台人脸识别和签到系统 + 后台人脸和考勤管理系统,全网独发
基于深度学习的口罩人脸识别的考勤管理系统,采用YOLOv11和Dlib算法实现人脸识别和考勤签到,前台人脸识别和签到系统 + 后台人脸和考勤管理系统,全网独发
安卓怎么显示res文件夹中的html_Android TextView如何显示html样式的文字
项目需求:TextView显示一段文字,格式为:白雪公主(姓名,字数不确定)向您发来了2(消息个数,不确定)条消息这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色。一开始我想的是用SpannableString与SpannableStringBuilder来实现,因为它可以实现一段文字显示不同的颜色,但是貌似它只能固定哪些位置的文字显示什么样式,于是乎放弃。然后就想到了用Ja...
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
如何让Android TextView(包括子类)的字体大小随着字数的增加而变化,以显示全部内容
在使用TextView的时候,很多情况下内容的长度是要变化的,字数多了,可能不能显示全部的内容,那如何让TextView在字数超了的时候,能自动缩小字体,或者直接匹配最优的字体大小,使内容全屏并全部显示 代码如下: protected void autoMatchFont(final TextView view){ view.addOnLayoutChangeListener(
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
TextView自动调节字体大小
前言:从Android8.0开始TextView支持自动调节字体大小,使其缩放至填满TextView,由于api26才开始支持该特性,我们采用com.android.support:appcompat-v7:26.0.0及以上的支持包即可支持api14以上。(即如下采用app:autoSizeTextType而非android:autoSizeTextType) 1、自动缩放(当文字少时放大,文字多时缩小至填满水平或垂直方向) <TextView android:layout_w
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
textview根据文字行数自动变化大小
http://www.cocoachina.com/ios/20150126/11023.html 转载于:https://www.cnblogs.com/angongIT/p/4395451.html
[转帖]自动调整TextView字体大小以适应文字长度
抱歉,具体出处忘记了 :oops: [code="java"] package com.test.android.textview; import android.content.Context; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.Tex...
设置Textview最大长度,超出显示省略号
<TextView android:id="@+id/tvUserNameUgcListItem" android:layout_height="@dimen/dp45" android:layout_width="wrap_content" android:text="云
小程序实现textarea随输入的文字行数变化高度自动增加
参考链接:https://blog.youkuaiyun.com/liuwengai/article/details/78987957 该实现方法是根据上面的链接改编为小程序的实现,代码如下: wxml: <view class="text-box"> <text>{{currentInput}}</text> <textarea class...
TextView文字自适应
TextView文字自适应
Android TextView Autosizing 字号自动调整大小,字号自适应
什么是Autosizeng呢,简单说就是TextView文本内容的字号大小是会根据内容多少而变大或者变小以适应布局,尽可能让TextView显示所有的文本内容。 比如TextView控件的宽高是固定的,在内容越少的情况下,为了内容填充整个控件,字号就会变大,在内容越多的情况下,为了显示更多的内容,字号就会缩小。如下图所示: 在Android 8.0(API级别26)及更高版本中,可以直接使用Au...
Android TextView字符串太长进行截取,以省略号代替
有时候我们会遇到这样的问题,一个大字符串写到TextView里面,根本写不下,但是该字符串并不是固定的,所以我们不知道需要定多长的TextView 所以对于过长的字符串我们最后以省略号代替。如下所示: TextView只显示一行,并且对于超出TextView宽度的部分以省略号结束。 android:layout_height="wrap_conten
454



被折叠的 条评论
为什么被折叠?



