Tôi đang cố gắng ghi đè giao diện mặc định ToggleButton
. Đây là XML xác định ToggleButton
:
<ToggleButton android:id="@+id/FollowAndCenterButton"
android:layout_width="30px"
android:layout_height="30px"
android:textOn="" android:textOff="" android:layout_alignParentLeft="true"
android:layout_marginLeft="5px"
android:layout_marginTop="5px" android:background="@drawable/locate_me"/>
Bây giờ, chúng tôi có hai biểu tượng 30 x 30 mà chúng tôi muốn sử dụng cho các trạng thái được nhấp / không được nhấp. Ngay bây giờ, chúng tôi có mã thay đổi biểu tượng nền theo chương trình tùy thuộc vào trạng thái:
centeredOnLocation.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (centeredOnLocation.isChecked()) {
centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me_on));
} else {
centeredOnLocation.setBackgroundDrawable(getResources().getDrawable(R.drawable.locate_me));
}
}
});
Rõ ràng là tôi đang tìm kiếm một cách tốt hơn để làm điều này. Tôi đã cố gắng tạo một bộ chọn cho hình nền, bộ chọn này sẽ tự động chuyển đổi giữa các trạng thái:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/locate_me" /> <!-- default -->
<item android:state_checked="true"
android:drawable="@drawable/locate_me_on" /> <!-- pressed -->
<item android:state_checked="false"
android:drawable="@drawable/locate_me" /> <!-- unchecked -->
Dường như không hiệu quả; đọc ToggleButton
API ( http://developer.android.com/reference/android/widget/ToggleButton.html ), có vẻ như các thuộc tính xml được kế thừa duy nhất là
XML Attributes
Attribute Name Related Method Description
android:disabledAlpha The alpha to apply to the indicator when disabled.
android:textOff The text for the button when it is not checked.
android:textOn The text for the button when it is checked.
Dường như không có thuộc tính android: state_checked, mặc dù lớp có phương thức isChecked()
và setChecked()
.
Vì vậy, có cách nào để thực hiện những gì tôi muốn trong XML, hay tôi bị mắc kẹt với cách giải quyết lộn xộn của mình?
CompoundButton
là trừu tượng!
CompoundButton
.