如何在 android 中定义 "On/Off" 复选框

How to define an "On/Off" Check box in android

我想设计一个带有类似于下图的复选框的布局

我该如何实现。

我尝试了以下方法,但这不是我想要的结果:

          <CheckBox
            android:id="@+id/chkBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="On"
            android:textColor="#000"
            android:textSize="17sp" />

你想要一个 Switch:

<Switch
    android:id="@+id/mySwitch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="20dp"
    android:text="Play with the Switch" />

来自Android documentation:

A Switch is a two-state toggle switch widget that can select between two options

开关在功能上类似于复选框,但外观不同。可以找到完整的布局示例 here.


正如 Der Golem 所指出的,您也可以使用较旧的 Toggle Button。这是两者的比较:

切换

切换按钮

*首先,它不是一个复选框,它是 android 中的一个开关 **感谢 mysamplecode.com 的代码,因为我无法 post link 例如:

<Switch
    android:id="@+id/mySwitch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="20dp"
    android:text="Play with the Switch" />

<TextView
    android:id="@+id/switchStatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/mySwitch"
    android:layout_marginTop="22dp"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

主要:

 public class MainActivity extends Activity {

private TextView switchStatus;
private Switch mySwitch;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    switchStatus = (TextView) findViewById(R.id.switchStatus);
    mySwitch = (Switch) findViewById(R.id.mySwitch);

    //set the switch to ON 
    mySwitch.setChecked(true);
    //attach a listener to check for changes in state
    mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {

            if(isChecked){
                switchStatus.setText("Switch is currently ON");
            }else{
                switchStatus.setText("Switch is currently OFF");
            }

        }
    });

    //check the current state before we display the screen
    if(mySwitch.isChecked()){
        switchStatus.setText("Switch is currently ON");
    }
    else {
        switchStatus.setText("Switch is currently OFF");
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}