我有一个正方形的FrameLayout。我在布局中有一个TextView,还有一个用于增加/减小textSize的选项。当文本足够大以填充整个FrameLayout时,我想限制文本增加选项。因此,如果我从25sp开始,当用户达到40sp并且TextView高度超过FrameLayout高度时,我需要恢复到39sp,并禁止进一步增加文本大小。 TextView的来源是可以跨越的。在Android上使TextView适合布局
这是我迄今为止做到的。
对于每个可跨越片段,增加按钮I只需setTextSize(currentValue + 1)
;
因为我不知道我的TextView的“真实”的大小时,我的setText再次,我已经使用
ViewTreeObserver vto = textView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//here I have the real sizes of the textView and if the height is too big, I simply
setTextSize(currentValue - 1)
}
的缺点是增加文本的可视化操作 - >再次减少它。所以用户会看到100ms的文字变大,然后恢复原样。 是否有处理这种计算的好方法,所以我可以避免实际增加文本大小?
如何检测透明的'TextView',一切工作正常? – 2013-03-05 19:21:39
我首先将可扩展参数(文本大小,字体类型..)应用于透明的“TextView”,并且在呈现TextView之后启动了“textView.getViewTreeObserver()”时,我可以得到实际的高度/宽度/位置在父母的布局。根据这些值,我可以决定是否将参数应用于实际可见的“TextView”。 – Alin 2013-03-05 20:46:11