2013-06-29 2 views
2

Я разрабатываю приложение для Android и мне нужно знать количество символов, которые могут быть показаны в одной строке, чтобы определить количество строк моей строки с помощью какого-либо метода.
Как это можно сделать? танков много.Как узнать, сколько персонажей может быть помещено в одну строку?

+0

, что вы говорите ?? 'Edittext',' TextView' ????? – 7bluephoenix

+0

TextView, но я использую LayoutInflater, поэтому я не могу использовать getlinecount – LMCompany

ответ

1

Это должно сделать работу для вас (дать или взять несколько ошибок от кодирования без язей: - /)

int countLineBreaks(final TextView view, final String toMeasure) { 

    final Paint paint = textView.getPaint(); // Get the paint used by the TextView 
    int startPos = 0; 
    int breakCount = 0; 
    final int endPos = toMeasure.length(); 

    // Loop through the string, moving along the number of characters that will 
    // fit on a line in the TextView. The number of iterations = the number of line breaks 

    while (startPos < endPos) { 
     startPos += paint.breakText(toMeasure.substring(startPos, endPos), 
            true, tv.getWidth(),(float[]) null); 
     lineCount++; 
    } 
    // Line count will now equal the number of line-breaks the string will require 
    return lineCount; 
} 

..you получить идею; -)

+0

резервуаров много, это сработало: D – LMCompany

0

Каждый персонаж имеет свою собственную ширину. Как любая строка, содержащая 10 символов, не совпадает с другой строкой, которая также содержит 10 символов.

u может установить его -> textView.setTypeface (Typeface.MONOSPACE);

Monospace шрифт работает для изготовления будет регулярный char одинаковой ширины. Тогда вы можете сделать все, чтобы узнать, сколько персонажей может быть помещено в одну строку?

+0

Ну, я использую арабскую строку и использую шрифт как шрифт, как я могу это сделать? – LMCompany

0

Вы можете попробовать это

установить Typeface.MONOSPACE как предложено GEET. затем выполните следующие действия:

Paint.measureText(String s) возвращает ширину строки s. Используя это, вы можете получить требуемую ширину 1 символа. И из метода View.getwidth() вы можете получить ширину представления. Таким образом, из этих двух значений можно вычислить

+0

Я установил свой андроид: textSize = 4 мм, это то, что каждый персонаж имеет одинаковый размер? – LMCompany

+0

Нет, это зависит от шрифта ... если вы не используете моноширину, тогда это может быть иначе. Например, ширина 0 больше ширины 1 – stinepike

-1

попробовать это:

int totalLine = textView.getMeasuredHeight()/textView.getLineHeight(); 
Смежные вопросы