【问题标题】:How to set ToggleButton width to the wider of textOn and textOff values?如何将 ToggleButton 宽度设置为更宽的 textOn 和 textOff 值?
【发布时间】:2012-02-02 04:09:12
【问题描述】:

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

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

是否有保持恒定ToggleButton 宽度的首选方法?最好的方法是简单地调用getWidth(),然后再调用toggle(),然后再调用getWidth()

【问题讨论】:

    标签: android android-layout android-widget togglebutton


    【解决方案1】:

    因为它是一个只有两个字符串的按钮,所以根据较大的字符串在 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 的宽度和高度设置为您计算的值。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我会注意到,字符最多的文本(最长的字符串)不一定是宽度最大的文本;参见例如 iiiiiiiMMMM
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多