Настройка textSize в пользовательском представлении приводит к огромному тексту

Я вызываю следующее в конструкторе моего пользовательского представления:

private void style(Resources.Theme theme, AttributeSet attrs) { TypedArray a = theme.obtainStyledAttributes( attrs, R.styleable.StackedTextView, 0, 0); try { DebugTool.assertTrue(holdr != null, "View holder has not been properly intialized."); String line1 = a.getString(R.styleable.StackedTextView_line1); setLine1(line1); String line2 = a.getString(R.styleable.StackedTextView_line2); setLine2(line2); line1Size = a.getDimension(R.styleable.StackedTextView_line1_textSize, 20); line2Size = a.getDimension(R.styleable.StackedTextView_line2_textSize, 20); if (line1Size > 0) { holdr.textLine1.setTextSize(line1Size); } if (line2Size > 0) { holdr.textLine2.setTextSize(line2Size); } } finally { a.recycle(); } } 

Предполагается установить размер текста и текста для 2 текстовых полей.

В дополнение к строковым форматам текстового контента (который отлично работает) у меня есть следующее в my attr.xml.

  <attr name="line1_textSize" format="dimension" /> <attr name="line2_textSize" format="dimension" /> 

Когда я использую это представление и задаю размер текста, используя измерение через xml,

  <com.me.app.view.component.StackedTextView android:id="@+id/overview_total_reviews" app:line1="40" app:line2="Rating" style="@style/OverviewStackedText" app:line1_textSize="10sp" app:line2_textSize="12sp" /> 

Текст заканчивается значительно большим, чем ожидалось. Я устанавливаю только 10 и 12 сП соответственно, а размеры текста ближе к 30 с.

Может ли кто-нибудь увидеть, что я делаю неправильно? Нужно ли что-то делать с DisplayMetrics, чтобы убедиться, что все масштабируется правильно?

Изменить: добавление некоторых пояснений

Измерение подбирается. Текст изменяется, когда я устанавливаю разные размеры текста, используя свой собственный атрибут (в xml). Я также попытался использовать getDimensionPixelSize .

Это похоже на неправильное вычисление / измерение. Изменение 1sp (или dp) приводит к значительным изменениям.

Вместо этого попробуйте следующее:

 line1Size = a.getDimensionPixelSize(R.styleable.StackedTextView_line1_textSize, 0); line2Size = a.getDimensionPixelSize(R.styleable.StackedTextView_line2_textSize, 0); if (line1Size > 0) { holdr.textLine1.setTextSize(TypedValue.COMPLEX_UNIT_PX, line1Size); } if (line2Size > 0) { holdr.textLine2.setTextSize(TypedValue.COMPLEX_UNIT_PX, line2Size); } 
Intereting Posts
Android.content.res.Resources $ NotFoundException при программной настройке android.R.attr.listChoiceIndicatorMultiple OnCreateDialog не обновляет сообщение Служба Android foreground, которая может быть связана Android: автозаполнение Google Места. Как я могу использовать его для заполнения RecyclerView, а не в раскрывающемся меню? Создание тоста в действии из другого файла класса Java Как закрыть / отменить / отклонить системный диалог программным способом (Android) API автономной карты для разработки мобильных приложений Android Broadcast приемник не выполняется при закрытии приложения Как сделать синхронизацию или сообщение Async HTTP / Get Есть ли намерения андроида добавлять данные в Google? Таймер Android, который работает, когда устройство спит Проблема обнаружения столкновений на основе пикселов с OpenGLES 2.0 под Android Укажите верхний край макета для панели действия оверлей Отправка данных в мой (рабочий) виджетов Портирование ОС Firefox на Android-устройство