Увеличить размер текста кнопки Android - PullRequest
6 голосов
/ 27 мая 2011

У меня было несколько кнопок в LinearLayout по горизонтали. На большем устройстве весь текст кнопки помещается в одну строку с размером текста 20sp. Однако на меньшем устройстве с размером текста 20sp текст кнопок идет в две строки.

Как я могу сказать, чтобы размер текста был как можно большим, чтобы текст оставался на одной строке?

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Это работает для меня ... вам нужно будет настроить для ваших нужд:

// Determine Scaled Density for later calculations
Display dd = ((Activity) m_Context).getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
dd.getMetrics(dm);
float m_ScaledDensity = dm.scaledDensity;

Rect bounds = new Rect();
Paint p = new Paint();
p.setTypeface(btn.getTypeface());

// W is a very wide character
String sample = "NeedsToFIt"
int maxFont;
for (maxFont= 1
    ; -bounds.top <= btn.getHeight() && bounds.right <= btn.getWidth()
    ; maxFont++) {
  p.setTextSize(maxFont);
  p.getTextBounds(sample, 0, sample.length(), bounds);
}
maxFont = (int) ((maxFont - 1) / m_ScaledDensity);
btn.setTextSize(maxFont);
0 голосов
/ 10 июня 2012

Единственное решение, которое сработало для меня: Изменение размера текста, чтобы соответствовать представлению в Android [исходный код]

Короче говоря, переопределите метод onDraw в соответствии с вашими потребностями.

0 голосов
/ 27 мая 2011

вы можете получить разрешение экрана, а в своем коде вы можете адаптировать размер текста ваших кнопок, изменив LinearLayout.LayoutParams

РЕДАКТИРОВАТЬ: алгоритм

Первый : получите разрешение экрана, чтобы увидеть, является ли ваш телефон маленьким, средним или большим. (Для этого используйте класс: DisplayMetrics)

Второй : в своем коде вы будете тестировать для каждого типа размера (в общем, я думаю, 3: маленький, средний, большой), и измените textSize ваших кнопок следующим образом:

btn.setTextSize(float size ) ; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...