2011-07-26 143 views
6

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

编辑: 此外,我会在左侧和右侧包括一个小填充文本。大约5dp。并尽可能更好地控制标签的位置。

答案: 这就是我需要的!

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

嗨。你能否提供你声明切换按钮的布局xml文件部分?谢谢。 – Paul

+0

我试过这个,实际上我认为文字会放在绿线的右边,而是放在绿线的右边。似乎将文本放在绿线右侧是不可能的 - 参考:http://stackoverflow.com/questions/11084956/tooglebutton-align-text-label-on-the-right – Paul

回答

7

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 
     } 
    } 
} 
+0

谢谢!有没有办法在文本的位置上有更精细的纹理?像左,但5dp填充? – user123321

+0

我添加了在togglebutton上设置填充的选项。它非常简单,如toggleButton.setPaddin(int left,int top,int right,int bottom);对于更多的控制,你可以考虑设置ToggleButton的LayoutParams – Entreco

+0

是的,谢谢!我也明白了这一点!你摇滚。谢啦! – user123321

2
ToggleButton b1 = (ToggleButton) findViewById(R.id.button1); 
     if(b1.isChecked()){ 
      b1.setGravity(Gravity.RIGHT); 
     } 
     else{ 
      b1.setGravity(Gravity.LEFT); 
     } 

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

+0

谢谢!有没有办法在文本的位置上有更精细的纹理?像左,但5dp填充? – user123321

1

变化通过改变每当按钮被添加在OnClickListener一些像这样的代码点击重力对齐:

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

谢谢!有没有办法在文本的位置上有更精细的纹理?像左,但5dp填充? – user123321

+0

我不知道有什么好的简单方法可以在这个位置上获得更细的颗粒。但我确实知道一个难题,那就是在左对齐文本的开头添加一个空格,然后在右对齐文本的末尾添加另一个空格。像这样“开”和“关” – HenrikS

+0

是的,我也在考虑这一点,但我也需要填充顶部!看起来像一个切换按钮不允许进行大量的自定义。 – user123321

1

这正是我需要的!

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