Я начал с решения Чейза, но перед тем, как оно заработало на моем устройстве, пришлось адаптировать две вещи (Galaxy Nexus, Android 4.1):
с использованием копии TextPaint для схема измерений В документации TextView.getPaint () говорится, что она должна использоваться только для чтения, поэтому я сделал копию в обоих местах, где мы используем объект рисования для измерения:
// 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);
...
добавление модуля для установки размера текста
// modified: setting text size via this.setTextSize (instead of textPaint.setTextSize(targetTextSize))
setTextSize(TypedValue.COMPLEX_UNIT_PX, targetTextSize);
setLineSpacing(mSpacingAdd, mSpacingMult);
С этими двумя модификациями решение работает идеально для меня, спасибо Чейз! Я не знаю, связано ли это с Android 4.x, что оригинальное решение не работало. Если вы хотите увидеть его в действии или проверить, действительно ли он работает на вашем устройстве, вы можете взглянуть на мое приложение для карточек ToCo Flashcards , где я использую это решение для масштабирования текста карточки. Текст может иметь произвольную длину, и карточки отображаются в разных действиях, иногда меньше, иногда больше, плюс в режиме пейзаж + портрет, и я не нашел ни одного углового случая, когда решение не работало бы должным образом ...
Выполненный:
lspci -nnk | grep -iA2 net
, что команда скажет Вам Вашу беспроводную связь и ehternet устройство и любой драйвер, который загружается для них.
Также Вы могли работать:
lsmod
, что команда покажет Вам всем драйверы, загруженные, которые называют модулями на самом деле в Linux.