如何将ToggleButton宽度设置为更宽的textOn和textOff值?

时间:2012-01-04 08:10:02

标签: android android-layout android-widget togglebutton

切换选中状态时,ToggleButton窗口小部件会更改大小。例如,如果textOn值为“true”且textOff值为“不确定稍后给我打电话”,则选中状态切换会导致按钮宽度发生显着变化。

最好将ToggleButton的宽度设置为textOntextOff创建的两个内容包装宽度的最大值。

是否有一种保持ToggleButton宽度的首选方法?是简单地再次呼叫getWidth(),然后再呼叫toggle(),然后再呼叫getWidth()的最佳方式吗?

2 个答案:

答案 0 :(得分:3)

我需要这个用于我的切换按钮并稍微改进了一下。 我删除了布局设置并包含了填充。如果你没有考虑填充,你的字符串将被包裹在按钮内。

    ToggleButton tglBtn = (ToggleButton) view.findViewById(R.id.toggleBtn);
    tglBtn.setWidth((int) tglBtn.getPaint().measureText("Longest String")+tglBtn.getPaddingLeft()+tglBtn.getPaddingRight());

答案 1 :(得分:2)

因为它的按钮只有两个字符串,所以根据较大的字符串提供XML本身的宽度没有坏处。

但是如果你想计算字符串的宽度,那很简单:

Paint paint = toggleButton.getPaint();
float length = paint.measureText(YOUR_STRING);

这为您提供了在屏幕上显示的字符串的宽度。现在通过LayoutParams设置切换按钮的宽度。

让我们说你的切换按钮的父布局是LinearLayout。
所以它应该是这样的:
toggleButton.setLayoutParams(new LayoutParams(WIDTH_YOU_CALCULATED,LinearLayout.LayoutParams.WRAP_CONTENT));

这会将ToggleButton的宽度和高度设置为您计算的值。