Thay đổi văn bản Bật / Tắt của nút chuyển đổi Android


Câu trả lời:


202

Bạn có thể sử dụng phần sau để đặt văn bản từ mã:

toggleButton.setText(textOff);
// Sets the text for when the button is first created.

toggleButton.setTextOff(textOff);
// Sets the text for when the button is not in the checked state.

toggleButton.setTextOn(textOn);
// Sets the text for when the button is in the checked state.

Để đặt văn bản bằng xml, hãy sử dụng như sau:

android:textOff="The text for the button when it is not checked."
android:textOn="The text for the button when it is checked." 

Thông tin này là từ đây


4
tuy nhiên nó không hoạt động trên điện thoại ei samsung và htc
Serafins 21/09

2
Serafins, không đúng. Nó hoạt động trên điện thoại Samsung và HTC.
làm gián đoạn

4
Khi cập nhật văn bản bật và tắt theo chương trình, nút này không tự vẽ lại bằng văn bản mới. Bạn có thể buộc vẽ lại bằng cách gọi setChecked (toggleButton.isChecked). Nghe có vẻ vô lý nhưng đó là một hack để buộc phải vẽ lại. Xem câu trả lời stackoverflow này .
MidasLefko

Có vẻ như bạn không cần toggleButton.setTextOff (textOff) nữa; và toggleButton.setTextOn (textOn) ;. Văn bản cho mỗi trạng thái được bật tắt sẽ thay đổi bằng cách chỉ bao gồm các đặc điểm xml có liên quan.
Martin Erlic

1
Có, nó không hoạt động với android.support.v7.widget.SwitchCompatmột số OEM mà tôi đã kiểm tra!
sud007 27/09/2016

16

Trong ví dụ mà bạn liên kết đến, họ đang thay đổi nó thành Ngày / Đêm bằng cách sử dụng android:textOnandroid:textOff


Tôi thực sự liên kết đến một câu hỏi khác mà tôi chưa từng thấy trước đây. Cảm ơn vì đã chỉ ra câu trả lời cho câu hỏi của riêng tôi.
stylist1972,

11

Đặt XML là:

<ToggleButton
    android:id="@+id/flashlightButton"
    style="@style/Button"
    android:layout_above="@+id/buttonStrobeLight"
    android:layout_marginBottom="20dp"
    android:onClick="onToggleClicked"
    android:text="ToggleButton"
    android:textOn="Light ON"
    android:textOff="Light OFF" />

2

Có vẻ như bạn không cần toggleButton.setTextOff (textOff) nữa; và toggleButton.setTextOn (textOn) ;. Văn bản cho mỗi trạng thái được bật tắt sẽ thay đổi bằng cách chỉ bao gồm các đặc điểm xml có liên quan. Điều này sẽ ghi đè văn bản BẬT / TẮT mặc định.

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/toggleText"
    android:textOff="ADD TEXT"
    android:textOn="CLOSE TEXT"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:visibility="gone"/>


2

Bạn có thể thực hiện việc này bằng 2 tùy chọn:

Tùy chọn 1: Bằng cách thiết lập các thuộc tính xml của nó

 `android:textOff="TEXT OFF"
  android:textOn="TEXT ON"`

Tùy chọn 2: Lập trình

Đặt thuộc tính onClick: methodNameHere (của tôi là toggleState) Sau đó viết mã này:

public void toggleState(View view) {
   boolean toggle = ((ToogleButton)view).isChecked();
   if (toggle){
       ((ToogleButton)view).setTextOn("TEXT ON");
   } else {
      ((ToogleButton)view).setTextOff("TEXT OFF");
   }
}

Tái bút: nó hiệu quả với tôi, hy vọng nó cũng hiệu quả với bạn


2

Trong một số trường hợp, bạn cần buộc làm mới chế độ xem để làm cho nó hoạt động.

toggleButton.setTextOff(textOff);
toggleButton.requestLayout();

toggleButton.setTextOn(textOn);
toggleButton.requestLayout();

requestLayout()không hoạt động nhưng setChecked()có.
Irfan Latif
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.