2016-04-14 1 views
0

Я пытаюсь получить ширину текста, задающего текст. Вот код, который я использую:Android получить ширину и высоту текста перед текстом настройки и рендерингом

public int getTextViewEffectedWidth(TextView textView, String content){ 
      Rect bounds = new Rect(); 
      Paint paint = textView.getPaint(); 
      paint.getTextBounds(content, 0, content.length(), bounds); 
      return bounds.width(); 
} 

Но этот метод возвращает большую ширину. Пример:

  1. мне нужно установить в значение TextView «6978»
  2. Этот метод был рассчитать ширину = 46 (Кстати возвращаемое значение в дп или зр я установил в дп, причина в рх этого значения в не? достаточно.)
  3. Если установить TextView в ширину 46 дп или зр, TextView будет имеет дополнительное место extra place. to large width

Мне нужно, чтобы получить значение ширины, которая будет соответствовать ширине = «wrap_content» normal

Размер и шрифт TextView имеют значения по умолчанию.

ответ

0

попробуйте это, вы получите значение в пикселе;

int width=convertToPixel(textView.getWidth()); 
int height=convertToPixel(textView.getHeight()); 


private int convertToPixel(int n) { 
     Resources r = getResources(); 
     float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, n, r.getDisplayMetrics()); 
     return (int) px; 
    } 
+0

Это не поможет. Я сделал это раньше –

0

Я знаю, что через некоторое время после того, как ваш запрос, но вы используете чек в качестве OnGlobalLayoutListener?

Если нет, то вид не будет полностью нарисован на экране, и у вас не будет доступных размеров.

Внутри onGlobalLayout() вы можете вызвать измеренную ширину и измеренный вес.

Надеюсь, это поможет, если не вам, то другому.

 Смежные вопросы

  • Нет связанных вопросов^_^