Heute werden wir über den Android Toggle Button und den Switch in Android-Apps lernen. Wir werden den Switch Button Widget und das ToggleButton
Widget in unserer Anwendung diskutieren und implementieren.
Android Toggle Button
Der Android Toggle Button wird verwendet, um den Ein- und Aus-Zustand auf einem Button anzuzeigen. Der Switch ist ein weiterer Typ eines Toggle Buttons, der vor allem seit Android 4.0 verwendet wird. Der Android Switch bietet eine Schiebereglersteuerung. Sowohl der ToggleButton als auch der Switch sind Unterklassen der CompoundButton
-Klasse. Die XML-Attribute, die zur Definition eines ToggleButtons verwendet werden, werden unten beschrieben.
android:disabledAlpha
: Die Transparenz, die auf den Indikator angewendet wird, wenn er deaktiviert istandroid:textOff
: Der Text für den Button, wenn er nicht ausgewählt istandroid:textOn
: Der Text für den Button, wenn er ausgewählt ist
Um den ToggleButton programmatisch zu ändern, werden die folgenden Methoden verwendet.
CharSequence getTextOff()
: Gibt den Text zurück, wenn der Button nicht im ausgewählten Zustand istCharSequence getTextOn()
: Gibt den Text zurück, wenn der Button im ausgewählten Zustand istvoid setChecked(boolean checked)
: Ändert den ausgewählten Zustand dieses Buttons.
Android Switch
Die Android Switch oder das SwitchCompat-Widget (ein Teil der AppCompat-Bibliothek, die Abwärtskompatibilität für ältere Android-Versionen bis Android API v7 bietet) ist ein benutzerdefinierter Ein-Aus-Schieberegler, der häufig in den Einstellungen von Telefonen zu finden ist. Vorteile des Android Switch Widgets:
- Es ist der beste Ersatz für Kontrollkästchen und RadioButtons
- Die Implementierung dauert weniger als eine Minute
- Es ist nicht erforderlich, viele Drawables und andere Ressourcen zu verwenden
Das XML-Layout eines SwitchCompat ist wie folgt:
<android.support.v7.widget.SwitchCompat
android:id="@+id/switchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Switch example"
/>
android:text
wird verwendet, um einen Text neben dem Schiebeschalter anzuzeigen.
Beispiel für Android Toggle Button und Switch
In dieser Anwendung werden zwei ToggleButtons und ein Switch-Button angezeigt. Der Zustand der Toggle-Buttons wird in einem SnackBar angezeigt, wenn der FloatingActionButton
gedrückt wird. Der Zustand des Switch-Buttons wird immer dann auf „true“ geändert, wenn der Aktionsbutton des Snackbars geklickt wird. Oder der Zustand wird im Snackbar angezeigt, indem der Schalter verschoben wird.
Android Toggle Button und Switch Projektstruktur
Android Toggle Button Code
Die activity_main.xml
bleibt gleich. Die content_main.xml
enthält zwei Toggle-Buttons und einen Switch, der standardmäßig auf false gesetzt ist, wie im folgenden Code-Snippet gezeigt:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.journaldev.switchandtoggle.MainActivity"
tools:showIn="@layout/activity_main">
<ToggleButton
android:id="@+id/tb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="ToggleButton 1"
android:textOff="Off"
android:textOn="On" />
<ToggleButton
android:id="@+id/tb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tb1"
android:layout_alignBottom="@+id/tb1"
android:layout_toRightOf="@+id/tb1"
android:text="ToggleButton 2"
android:textOff="Off"
android:textOn="On" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switchButton"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:checked="false"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Switch example"
/>
</RelativeLayout>
Der MainActivity.java
ist unten angegeben:
package com.journaldev.switchandtoggle;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SwitchCompat;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class MainActivity extends AppCompatActivity {
ToggleButton tb1, tb2;
SwitchCompat switchCompat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StringBuilder result = new StringBuilder();
result.append("ToggleButton1 : ").append(tb1.getText());
result.append("\nToggleButton2 : ").append(tb2.getText());
Snackbar snackbar= Snackbar.make(view, result.toString(), Snackbar.LENGTH_LONG)
.setAction("SWITCH ENABLE", new View.OnClickListener() {
@Override
public void onClick(View v) {
switchCompat.setChecked(true);
}
});
snackbar.setActionTextColor(Color.RED);
snackbar.show();
}
});
tb1= (ToggleButton)findViewById(R.id.tb1);
tb2=(ToggleButton)findViewById(R.id.tb2);
switchCompat=(SwitchCompat)findViewById(R.id.switchButton);
switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Snackbar.make(buttonView, "Switch state checked "+isChecked, Snackbar.LENGTH_LONG)
.setAction("ACTION",null).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Das Menü aufblasen; dies fügt Elemente zur Aktionsleiste hinzu, wenn sie vorhanden ist.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Behandeln Sie hier Klicks auf die Aktionsleistenelemente. Die Aktionsleiste wird
// automatisch Klicks auf die Home-/Up-Schaltfläche behandeln, solange
// Sie eine übergeordnete Aktivität in der AndroidManifest.xml angeben.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
A String builder is used to get the current state of the toggle buttons and append them to display in the snackbar. Switch button being a subclass of Compound Button, an OnCheckChangeListener
is implemented as shown in the code above. The output below is the app in action. This brings an end to android toggle button and switch in android tutorial. You can download the final Android SwitchAndToggle Project from the link below.
Android-Switch- und Toggle-Button-Projekt herunterladen
Referenz: ToggleButton Android-Dokumentation
Source:
https://www.digitalocean.com/community/tutorials/android-toggle-button-switch-example