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

Android 如何将ToggleButton宽度设置为更宽的textOn和textOff值?,android,android-layout,android-widget,togglebutton,Android,Android Layout,Android Widget,Togglebutton,切换选中状态时,小部件会更改大小。例如,如果textOn值为“真”,而textOff值为“不确定以后再打电话给我”,选中状态切换会导致按钮宽度发生显著变化 最好将ToggleButton的宽度设置为textOn和textOff创建的两个内容包装宽度中的最大值 是否有保持恒定宽度的首选方法?调用getWidth(),然后调用toggle(),然后再次调用getWidth(),这是最好的方法吗?因为它是一个只包含两个字符串的按钮,所以根据较大的字符串在XML本身中提供宽度是无害的 但如果要计算字符串

切换选中状态时,小部件会更改大小。例如,如果
textOn
值为“真”,而
textOff
值为“不确定以后再打电话给我”,选中状态切换会导致按钮宽度发生显著变化

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


是否有保持恒定宽度的首选方法?调用
getWidth()
,然后调用
toggle()
,然后再次调用
getWidth()
,这是最好的方法吗?

因为它是一个只包含两个字符串的按钮,所以根据较大的字符串在XML本身中提供宽度是无害的

但如果要计算字符串的宽度,很简单:

Paint paint = toggleButton.getPaint();
float length = paint.measureText(YOUR_STRING);
这将为您提供它在屏幕上显示的字符串宽度。现在通过
LayoutParams
设置切换按钮的宽度


假设切换按钮的父布局为LinearLayout。
因此应该是:
切换按钮.setLayoutParams(新的LayoutParams(您计算的宽度,LinearLayout.LayoutParams.WRAP\u内容))

这会将您的切换按钮的宽度和高度设置为您计算的值。

我的切换按钮需要这个,并对其进行了一些改进。 我删除了布局设置并添加了填充。如果不考虑填充,字符串将被包裹在按钮内

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

我要指出的是,字符最多(字符串最长)的文本不一定是宽度最大的文本;参见示例
iiiii
vs
MMMM