2011-07-26 32 views
6

Có cách nào để kiểm soát vị trí văn bản cho trạng thái bật và tắt của ToggleButton không? Ví dụ: tôi muốn nhãn văn bản được căn trái khi được căn chỉnh và căn phải khi tắt.ToggleButton Vị trí nhãn văn bản cho trạng thái bật và tắt

EDIT: Ngoài ra, tôi muốn bao gồm một phần đệm nhỏ cho văn bản ở bên trái và bên phải. Khoảng 5dp. và có quyền kiểm soát tốt hơn đối với vị trí nhãn nếu có thể.

TRẢ LỜI: Đây là những gì tôi cần!

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

Xin chào. Bạn có thể vui lòng cung cấp phần tệp xml bố cục nơi bạn đã khai báo nút chuyển đổi không? Cảm ơn bạn. – Paul

+0

Tôi đã thử điều này và thực sự tôi nghĩ rằng văn bản sẽ được đặt ở phía bên phải của đường màu xanh lá cây, nhưng thay vào đó được đặt ở phía bên phải phía trên đường màu xanh lá cây. Dường như việc đặt văn bản ở bên phải của đường màu xanh lá cây là không thể - tham khảo: http://stackoverflow.com/questions/11084956/tooglebutton-align-text-label-on-the-right – Paul

Trả lời

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

Cảm ơn bạn! Có cách nào để có hạt mịn hơn vị trí của văn bản không? Giống như LEFT nhưng đệm 5dp? – user123321

+0

Tôi đã thêm các tùy chọn để thiết lập phần đệm trên nút bật/tắt. Nó thực sự đơn giản như toggleButton.setPaddin (int left, int top, int right, int bottom); Để kiểm soát nhiều hơn, bạn có thể cân nhắc đặt LayoutParams cho ToggleButton – Entreco

+0

Yup, cảm ơn! Tôi chỉ tìm ra điều đó! Bạn đá. Cảm ơn người đàn ông! – user123321

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

Lưu ý rằng bạn sẽ không thấy bất kỳ thay đổi nào nếu nút không có kích thước tối thiểu (phải lớn hơn văn bản có thể đọc).

+0

Cảm ơn bạn! Có cách nào để có hạt mịn hơn vị trí của văn bản không? Giống như LEFT nhưng đệm 5dp? – user123321

1

Thay đổi sự liên kết bằng cách thay đổi lực hấp dẫn bất cứ khi nào nút được nhấp bằng cách thêm một số mã trong OnClickListener như thế này:

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

Cảm ơn bạn! Có cách nào để có hạt mịn hơn vị trí của văn bản không? Giống như LEFT nhưng đệm 5dp? – user123321

+0

Tôi không biết cách nào đơn giản để có được hạt mịn hơn vị trí. Nhưng tôi biết một giải pháp xấu xí, nó sẽ là thêm một khoảng trống ở đầu văn bản căn trái và sau đó một khoảng trắng khác ở cuối văn bản được căn chỉnh bên phải. Như thế này "On" và "Off" – HenrikS

+0

Vâng, tôi cũng đang xem xét điều đó, nhưng tôi cũng cần đệm trên TOP! Có vẻ như nút chuyển đổi không cho phép nhiều tùy chỉnh. – user123321

1

Đây là những gì tôi cần!

button.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL); 
button.setPadding(0, 0, 5, 0); 
Các vấn đề liên quan