У меня есть этот код для измерения ширины текста.
public float textWidthPixels(String text) {
TextPaint textPaint = myAccountView.getPaint();
float width = textPaint.measureText(text);
View parent = (View) myAccountView.getParent();
int paddingLeft = parent.getPaddingLeft();
int paddingRight = parent.getPaddingRight();
return width - (paddingLeft + paddingRight);
}
который вызывается из
final ViewTreeObserver[] viewTreeObserver = {myAccountView.getViewTreeObserver()};
viewTreeObserver[0].addOnPreDrawListener(
new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
Однако
Когда я изменяю размер шрифта на большой в меню специальных возможностей,
ширина текста изменяется, но неточно (в нем говорится, что ширина текста меньше, чем вид, в котором он находится, но на самом деле он больше, чем вид)
я звоню на viewTreeObserver.onPreDraw()
@pskink, но как мне получить sp в коде? `float width = textPaint.measureText (text);` возвращает px.
@pskink У меня двойная проверка и изменение ширины текста, но не точно (в нем говорится, что ширина текста меньше, чем в представлении, но на самом деле больше, чем в представлении)




Где вы вызываете этот метод? Все уже отрендерили?