Android Multiple Textviews автоматически настраивает один большой текст

Я работаю над приложением «Книга». Позвольте мне дать вам всю концепцию.

Существует один большой текст и несколько текстовых представлений в соответствии с длиной текста.

Я должен показать один текст (часть большого текста), который появляется на экране (без прокрутки). Если другой текст не виден пользователю, другой текст должен отображаться в другом текстовом представлении (следующая страница).

когда я гуглю, я не могу найти способ получить длину текста, который отображается в одном текстовом представлении (одна страница). Поэтому я могу взять другой текст на другой странице

Я приложил некоторое изображение для ясности понятий.

введите здесь описание изображения

введите здесь описание изображения

Пожалуйста, предложите мне. Что я могу для этого сделать? Заранее спасибо


person Mayur Raval    schedule 05.02.2015    source источник
comment
разные шрифты имеют разный размер глифа и каждый символ в нем тоже. если вы вычисляете пиксели в каждом символе, вы должны объединить их размеры экрана   -  person Murtaza Khursheed Hussain    schedule 05.02.2015
comment
то, что вы пытаетесь сделать, выполнимо, но требует большого количества вычислений.   -  person Murtaza Khursheed Hussain    schedule 05.02.2015
comment
Еще одна вещь, которую вы можете сделать, это установить определенные символы в одном текстовом представлении, а затем разделить остальные на несколько текстовых представлений.   -  person Murtaza Khursheed Hussain    schedule 05.02.2015
comment
Да, расчетов много. Есть ли у вас какие-либо советы по расчету? Я был в замешательстве . Как это сделать?   -  person Mayur Raval    schedule 05.02.2015
comment
что вы хотите знать на самом деле?   -  person Murtaza Khursheed Hussain    schedule 05.02.2015
comment
Измерение длины текста (в соответствии со шрифтом текста), который устанавливается и помещается на экране мобильного устройства без прокрутки, поэтому я могу рассчитать и установить весь текст на экране с разделением большого текста с такой длиной.   -  person Mayur Raval    schedule 05.02.2015
comment
вы можете получить ширину текста, используя метод textView.getTextbounds()   -  person Murtaza Khursheed Hussain    schedule 05.02.2015
comment
есть очень хорошее объяснение здесь   -  person Murtaza Khursheed Hussain    schedule 05.02.2015


Ответы (1)


хорошо, есть три решения

  1. если вы рассчитываете размеры экрана и используете такие размеры, как малый, средний и большой.
  2. и вы просто делите свои данные и устанавливаете в textview.

Получите количество строк текста, которые поместятся на экране, чем Измерьте, сколько текста уместится в TextView. Вычислить Общее количество текста для заполнения TextView приблизительно равно.

    private void TextMeasure(String text,
                         TextView tvl, TextView tvr) {
    int linesPerScreen = tvl.getHeight() / (tvl.getLineHeight() + (int) tvl.getLineSpacingExtra());
    Paint paint = tvl.getPaint();
    int textWidth = paint.breakText(text, 0, text.length(),
            true, tvl.getWidth(), null);
    int totalText = textWidth * linesPerScreen;
    String leftText = text.substring(0, totalText);
    String rightText = text.substring(totalText,
            text.length());
    tvl.setText(leftText);
    tvr.setText(rightText);
}

источник

вероятно, этот вопрос поможет вам.

person Fasiha    schedule 05.02.2015
comment
Здесь tvl.getLineSpacingExtra() и linesPerScreen всегда возвращают 0 - person Mayur Raval; 05.02.2015
comment
когда вы попробуете это, вы обнаружите, что tv.getHeight() возвращает 0 в это время. Причина в том, что представление для действия еще не создано, поэтому TextView не имеет высоты. Как с этим бороться? Есть несколько способов, но самый простой — отправить Runnable в очередь сообщений TextView. Runnable будет вызываться после завершения макета TextView. - person Fasiha; 05.02.2015