我有多个按钮在一个水平线布局。在更大的设备上,所有的按钮文本都以20sp的文本大小放在一行。然而,在一个20sp文本大小的较小设备上,按钮的文本变为两行。
我如何告诉它使文本大小尽可能大,以便文本保持在一行?

最佳答案

这对我有用…您需要根据自己的需要进行定制:

// 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);

07-26 00:06