Итак, по моим особым причинам, я должен убедиться, что размер String
(размещенный в текстовом формате) (в пикселях) не превышает размер ширины устройства (в пикселях). Для того, чтобы получить ширину экрана я использую:Как сравнить размер экрана экрана с размером строки?
final float scale = context.getResources().getDisplayMetrics().density;
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
try{
Point size = new Point();
display.getSize(size);
screenWidth = size.x;
}catch(NoSuchMethodError e){
screenWidth = display.getWidth();
}
screenWidth = screenWidth - ((int) (10 * scale + 0.5f)); //takes into account a 10dp margin
А чтобы получить длину строки, я использую:
paint.measureText(string);
Где строка является String
объект и краска представляет собой Paint
объект. Проблема, с которой я столкнулся: Метод measureText
говорит, что String
меньше, чем длина экрана, даже если он намного длиннее. Я что-то упустил? Есть ли лучший подход к этому? Любая помощь, предложения или советы будут очень признательны! Благодаря!
Чтобы вычислить ширину символа, вам необходимо знать размер символа. И это зависит от немонопольных шрифтов. –
Итак, была бы формула просто (размер символов) * (размер строки)? Где (размер символов) должен, вероятно, равняться наибольшему размеру символа (M) и (размер строки), будет равен методу 'paint.measureText'? И еще мой вопрос: каким образом 'paint.measureText()' вычисляет размер без ссылки на размер символа? – chRyNaN
Нет, вам нужно перечислить символ _each_ и вычислить его размер. Затем добавьте их все вместе. –