Вычтите соответствующие элементы из 2 списков, которые оба содержат матрицы столбцов

Я начал с решения Chase, но мне пришлось адаптировать две вещи до того, как он работал на моем устройстве (Galaxy Nexus, Android 4.1):

  1. , используя копию TextPaint для измерения макета В документации для TextView.getPaint () указано, что он должен использоваться только для чтения, поэтому я сделал копию в обоих местах, где мы используем объект paint для измерения:
    // 1. in resizeText()
    if (mAddEllipsis && targetTextSize == mMinTextSize && textHeight > height) {
      // Draw using a static layout
      // modified: use a copy of TextPaint for measuring
      TextPaint paint = new TextPaint(textPaint);
    
    // 2. in getTextHeight()
    private int getTextHeight(CharSequence source, TextPaint originalPaint, int width, float textSize) {
      // modified: make a copy of the original TextPaint object for measuring
      // (apparently the object gets modified while measuring, see also the
      // docs for TextView.getPaint() (which states to access it read-only)
      TextPaint paint = new TextPaint(originalPaint);
      // Update the text paint object
      paint.setTextSize(textSize);
      ...
    
  2. добавление единицы для установки размера текста
    // modified: setting text size via this.setTextSize (instead of textPaint.setTextSize(targetTextSize))
    setTextSize(TypedValue.COMPLEX_UNIT_PX, targetTextSize);
    setLineSpacing(mSpacingAdd, mSpacingMult);
    

С этими двумя изменениями решение отлично работает для меня, благодаря Chase! Я не знаю, связано ли это с Android 4.x, что исходное решение не работает. Если вы хотите увидеть его в действии или проверить, действительно ли он работает на вашем устройстве, вы можете посмотреть мое приложение флеш-карты Flashcards ToGo , где я использую это решение для масштабирования текста флеш-карты. Текст может иметь произвольную длину, и карточки будут отображаться в разных действиях, иногда поменьше, иногда больше, плюс в режиме пейзажа + портрет, и я не нашел ни одного углового случая, когда решение не будет работать должным образом ...

0
задан Eminem 2 March 2019 в 22:47
поделиться