最大化Android按钮文本的大小

时间:2011-05-27 19:35:59

标签: android button

我在LinearLayout中有多个水平按钮。在较大的设备上,所有按钮文本都以20sp文本大小放在一行上。但是,在20sp文本大小的较小设备上,按钮的文本分为两行。

如何判断文本大小尽可能大,以便文本保持在一行?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以获得屏幕分辨率,在代码中,您可以通过更改LinearLayout.LayoutParams

来调整按钮文字的大小

编辑:算法

首先:获取屏幕分辨率,以查看您的手机是小型还是大型(为此,请使用课程:DisplayMetrics

第二:在您的代码中,您将测试每种类型的大小(通常我认为3:小,meduim,大),并修改按钮的textSize,如下所示:

btn.setTextSize(float size ) ; 

答案 2 :(得分:0)

唯一对我有用的解决方案:Resize Text to Fit the View in Android  [source code]

简而言之,覆盖onDraw方法以满足您的需求。