Vandaag zullen we leren over de Android Toggle Button en Schakelaar in de Android-app. We zullen de Schakelaar widget bespreken en implementeren en de ToggleButton-widget in onze applicatie.
Android Toggle Button
De Android Toggle Button wordt gebruikt om de aan en uit staat weer te geven op een knop. Schakelaar is een ander type schakelknop dat voornamelijk wordt gebruikt sinds Android 4.0. Android Switch biedt een schuifregelaar. Zowel ToggleButton als Switch zijn subklassen van de CompoundButton
klasse. XML-attributen die worden gebruikt om een ToggleButton te definiëren, worden hieronder beschreven.
android:disabledAlpha
: De alpha om toe te passen op de indicator wanneer uitgeschakeldandroid:textOff
: De tekst voor de knop wanneer deze niet is aangevinktandroid:textOn
: De tekst voor de knop wanneer deze is aangevinkt
Om de ToggleButton programmatisch aan te passen worden de volgende methoden gebruikt.
CharSequence getTextOff()
: Het retourneert de tekst wanneer de knop niet in de aangevinkte staat isCharSequence getTextOn()
: Het retourneert de tekst voor wanneer de knop in de aangevinkte staat isvoid setChecked(boolean checked)
: Het verandert de aangevinkte staat van deze knop
Android-schakelaar
De Android-schakelaar of SwitchCompat-widget (een onderdeel van de AppCompat-bibliotheek die achterwaartse compatibiliteit biedt voor oudere Android-versies tot en met Android API v7) is een aangepaste aan/uit-schuifregelaar die vaak te zien is in telefooninstellingen. Voordelen van de Android-schakelaar-widget:
- Het is de beste vervanging voor selectievakjes en radioknoppen
- Implementatie duurt minder dan een minuut
- Er is geen grote hoeveelheid tekeningen en andere bronnen nodig
De XML-indeling van een SwitchCompat wordt hieronder gegeven:
<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
wordt gebruikt om een tekst naast de schuifknop weer te geven.
Voorbeeld van Android-toggleschakelaar en -schakelaar
In deze toepassing tonen we twee ToggleButtons en één schakelaarknop. De toestand van de ToggleButtons wordt weergegeven in een SnackBar wanneer de FloatingActionButton
wordt ingedrukt. De toestand van de schakelaarknop wordt gewijzigd in waar wanneer de actieknop van de snackbar wordt aangeklikt. Of de toestand wordt weergegeven in de snackbar door de schakelaar te verschuiven.
Projectstructuur van Android Toggle-knop en schakelaar
Code voor Android Toggle-knop
De activity_main.xml
blijft hetzelfde. De content_main.xml
bevat standaard twee Toggle-knoppen en een schakelaar die standaard op false staat, zoals te zien is in onderstaande codefragment:
<?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>
De MainActivity.java
is hieronder gegeven:
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) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
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.
Download het Android Switch- en Toggle-knop-project
Referentie: ToggleButton Android Doc
Source:
https://www.digitalocean.com/community/tutorials/android-toggle-button-switch-example