切换选中状态时,ToggleButton
窗口小部件会更改大小。例如,如果textOn
值为“true”且textOff
值为“不确定稍后给我打电话”,则选中状态切换会导致按钮宽度发生显着变化。
最好将ToggleButton
的宽度设置为textOn
和textOff
创建的两个内容包装宽度的最大值。
是否有一种保持ToggleButton
宽度的首选方法?是简单地再次呼叫getWidth()
,然后再呼叫toggle()
,然后再呼叫getWidth()
的最佳方式吗?
答案 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的宽度和高度设置为您计算的值。