Как рассчитать размер шрифта для TextView
, чтобы вписаться в определенные мной ограничения с многострочным текстом?android textview рассчитать размер шрифта в соответствии с заданными границами
У меня есть TextView
внутри RelativeLayout
. На этапе выполнения будет известен размер экрана для приложения, основанный на этом.
Rect boundsTv = TextPositions.getTextViewBounds(1, mainActivity.mWidthPx, mainActivity.mHeightPx);
Log.e("SlideLoader", "paint.boundsTv() left, right, top, bottom :"+boundsTv.flattenToString());//paint.boundsTv() left, right, top, bottom :163 363 1767 749
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tvText.getLayoutParams();
params.width = boundsTv.width();// right - left;
params.height = boundsTv.height();// bottom - top;
params.leftMargin = boundsTv.left; // Your X coordinate
params.topMargin = boundsTv.top; // Your Y coordinate
tvText.setLayoutParams(params);
tvText.invalidate();
И здесь возникает проблема. На некоторых устройствах шрифт мал, и он заполняется меньше, чем половина TextView на других устройствах настолько велика, что не подходит даже не половине.
Выходной код с устройства, где размер шрифта на большой. Я проверил несколько методов, вероятно, будет предлагать эти 2 метода, как не в состоянии:
// left, top - right, bottom
TextPaint paint = tvText.getPaint();
paint.getTextBounds(text, 0, text.length()-1, boundsTv);
Log.e("SlideLoader", "paint.getTextBounds() left, right, top, bottom :"+boundsTv.flattenToString());//paint.getTextBounds() left, right, top, bottom :2 -33 16049 9, how to interpret this values?!
float width = paint.measureText(text);// for single line
Pff ...Я решил определить около 40 папок и переключиться, это работает только теоретически и в документах Google, а не на практике;) +1 для усилий, но наверняка я бы не рекомендовал использовать в коммерческой среде, для домашней работы тоже хорошо –
Хе-хе справедливо :), но если вам не нужно иметь разный размер для каждого размера экрана, то это довольно хорошее решение imo. Подумал бы, что вы были бы очень хороши на пути, скажем, от 3 до 5 размеров. Возможно, это соответствует вашим потребностям: https://github.com/danclarke/AutoResizeTextView – cYrixmorten
Я добавил 4 из моих устройств, я готов поспорить, если я пойду на рабочее место и принесу 2 устройства, у них будут другие показатели :) –