【问题标题】:ToggleButton Text Label Placement for On and Off State开启和关闭状态的切换按钮文本标签放置
【发布时间】:2011-10-13 05:38:57
【问题描述】:

是否可以控制 ToggleButton 的打开和关闭状态的文本位置?例如,我希望文本标签在打开时左对齐,在关闭时右对齐。

编辑: 另外,我会在左右两边的文本中添加一点填充。大约5dp。并尽可能更好地控制标签放置。

回答: 这就是我需要的!

button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
button.setPadding(0, 0, 5, 0);

【问题讨论】:

  • 嗨。您能否提供您声明切换按钮的布局 xml 文件部分?谢谢。
  • 我已经尝试过了,实际上我认为文本将放在绿线的右侧,而是放在绿线上方的右侧。似乎无法将文本放在绿线的右侧 - 参考:stackoverflow.com/questions/11084956/…

标签: android android-layout togglebutton


【解决方案1】:
  
public class StackActivity extends Activity implements OnCheckedChangeListener {

    private ToggleButton tb;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tb = (ToggleButton)findViewById(R.id.toggleButton1);
        tb.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    {
        if(isChecked)
        {
            tb.setGravity(Gravity.LEFT);
            tb.setPadding(5,0,0,0);    // Set left padding 
        } else
        {
            tb.setGravity(Gravity.RIGHT);
            tb.setPadding(0,0,5,0);    // Set right padding
        }
    }
}

【讨论】:

  • 谢谢!有没有办法在文本的位置上也有更细的粒度?像 LEFT 但 5dp 填充?
  • 我添加了用于设置切换按钮上的填充的选项。它真的很简单 toggleButton.setPaddin(int left, int top, int right, int bottom);要获得更多控制,您可以考虑为 ToggleButton 设置 LayoutParams
  • 好的,谢谢!我也刚想通!你摇滚。谢谢大佬!
【解决方案2】:
ToggleButton b1 = (ToggleButton) findViewById(R.id.button1);
        if(b1.isChecked()){
            b1.setGravity(Gravity.RIGHT);
        }
        else{
            b1.setGravity(Gravity.LEFT);
        }

请注意,如果按钮不是最小尺寸(必须大于标签文本),您将不会看到任何更改。

【讨论】:

  • 谢谢!有没有办法在文本的位置上也有更细的粒度?像 LEFT 但 5dp 填充?
【解决方案3】:

由于 ToggleButton 是 TextView 的子类,请尝试使用android:gravity="left"

请选择http://developer.android.com/reference/android/widget/TextView.html#attr_android:gravity

【讨论】:

    【解决方案4】:

    在单击按钮时通过在 OnClickListener 中添加一些代码来更改对齐方式,如下所示:

    toggleButton.setOnClickListener(new OnClickListener() 
            {
                public void onClick(View v) {
                   if (((ToggleButton)v).isChecked())
                        toggleButton.setGravity(Gravity.LEFT);
                   else
                       toggleButton.setGravity(Gravity.RIGHT);
                }
            });
    

    【讨论】:

    • 谢谢!有没有办法在文本的位置上也有更细的粒度?像 LEFT 但 5dp 填充?
    • 我不知道有什么好的简单方法可以在该位置上获得更精细的颗粒。但我确实知道一个丑陋的解决方案,那就是在左对齐文本的开头添加一个空格,然后在右对齐文本的末尾添加另一个空格。像这样的“开”和“关”
    • 是的,我也在考虑,但我还需要在 TOP 上填充!似乎切换按钮不允许进行大量自定义。
    【解决方案5】:

    这正是我需要的!

    button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
    button.setPadding(0, 0, 5, 0);
    

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 2015-03-22
      • 1970-01-01
      • 2012-01-30
      相关资源
      最近更新 更多