Android Toggle Button, Schalter Beispiel

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.

  1. android:disabledAlpha: Die Transparenz, die auf den Indikator angewendet wird, wenn er deaktiviert ist
  2. android:textOff: Der Text für den Button, wenn er nicht ausgewählt ist
  3. android:textOn: Der Text für den Button, wenn er ausgewählt ist

Um den ToggleButton programmatisch zu ändern, werden die folgenden Methoden verwendet.

  1. CharSequence getTextOff(): Gibt den Text zurück, wenn der Button nicht im ausgewählten Zustand ist
  2. CharSequence getTextOn(): Gibt den Text zurück, wenn der Button im ausgewählten Zustand ist
  3. void 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:

  1. Es ist der beste Ersatz für Kontrollkästchen und RadioButtons
  2. Die Implementierung dauert weniger als eine Minute
  3. 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