Android 在视图中缩放文本以适应?
我不相信这是真的,但我想再核实一下。我想设置TextView的文本大小,使其适合给定宽度的单行。例如:Android 在视图中缩放文本以适应?,android,resize,textview,Android,Resize,Textview,我不相信这是真的,但我想再核实一下。我想设置TextView的文本大小,使其适合给定宽度的单行。例如: <LinearLayout layout_width="100dip" layout_height="50dip"> <TextView layout_width="fill_parent" layout_height="wrap_content" textSize="fill" text="fit me please!" /&
<LinearLayout
layout_width="100dip"
layout_height="50dip">
<TextView
layout_width="fill_parent"
layout_height="wrap_content"
textSize="fill"
text="fit me please!" />
</LinearLayout>
谢谢您始终可以将xml布局定义与java相结合,并动态定义文本的大小。您可能需要一些计算和参考,从dip单位到当前使用屏幕的像素密度信息,但一旦完成,几乎可以保证解决所有情况下的问题。您可以使用
TextUtils.EllipsizeCallback
。当文本被省略时,此回调由textview完成。在这里,您可以将文本大小设置为小于当前大小
编辑:否则您可以通过这种方式使用TextUtils.ellipsize
while (mText != TextUtils.ellipsize(mText, textPaint, other params)) {
textpaint.setTextSize(textpaint.getTextSize() - 1);
}
此自定义函数应使用
public static void shrinkTextToFit(浮动可用宽度,TextView TextView,
浮动开始文本大小,浮动最小文本大小){
CharSequence text=textView.getText();
浮动文本大小=开始文本大小;
textView.setTextSize(startingTextSize);
而(text!=(TextUtils.ellipsize)(text,textView.getPaint(),
可用宽度,TextUtils.TruncateAt.END))){
textSize-=1;
if(textSize
这里有一个很好的自动调整文本的打包解决方案:嗨,是的,我已经写了一些东西来做这件事(有点难看),希望新版本的SDK可以添加一个新的标志来做同样的事情。小心。。这是正确的想法,但是getTextSize()返回PX,setTextSize()接受DIP。你不想把一个喂给另一个。在自变量中跟踪大小。我将textsize设置为paint对象,而不是textview。当我找到合适的尺寸时,才将其设置为textview。所以我认为使用这个想法没有问题。@userSevens7s哦,继续!我第一次没读对,就被我提到的愚蠢的格查难住了。干杯。@userSeven7s,我正在使用这种方法,我在这个设备中得到了java.lang.StackOverflower
:GT-I9192,D5803,API 4.2.2,4.4.4,我正在使用这种方法,我在这个设备中得到java.lang.StackOverflower
:GT-I9192,D5803,API 4.2,4.4
public static void shrinkTextToFit(float availableWidth, TextView textView,
float startingTextSize, float minimumTextSize) {
CharSequence text = textView.getText();
float textSize = startingTextSize;
textView.setTextSize(startingTextSize);
while (text != (TextUtils.ellipsize(text, textView.getPaint(),
availableWidth, TextUtils.TruncateAt.END))) {
textSize -= 1;
if (textSize < minimumTextSize) {
break;
} else {
textView.setTextSize(textSize);
}
}
}