Hoje vamos aprender sobre o Android Toggle Button e Switch em um aplicativo Android. Vamos discutir e implementar o widget Switch e o widget ToggleButton
em nossa aplicação.
Android Toggle Button
O Android Toggle Button é usado para exibir o estado ligado e desligado em um botão. O Switch é outro tipo de botão de alternância que é predominantemente usado desde o Android 4.0. O Android Switch fornece um controle deslizante. Ambos ToggleButton e Switch são subclasses da classe CompoundButton
. Os atributos XML usados para definir um ToggleButton são descritos abaixo.
android:disabledAlpha
: O alfa a ser aplicado ao indicador quando desativadoandroid:textOff
: O texto para o botão quando não está marcadoandroid:textOn
: O texto para o botão quando está marcado
Para modificar programaticamente o ToggleButton, os seguintes métodos são usados.
CharSequence getTextOff()
: Retorna o texto quando o botão não está no estado marcadoCharSequence getTextOn()
: Retorna o texto quando o botão está no estado marcadovoid setChecked(boolean checked)
: Altera o estado marcado deste botão
Interruptor Android
Interruptor Android ou widget SwitchCompat (parte da biblioteca AppCompat que fornece compatibilidade retroativa para versões mais baixas do Android até a API v7) é um controle deslizante personalizado de ligar/desligar comumente visto nas configurações do telefone. Vantagens do Widget Switch Android:
- É a melhor substituição para caixas de seleção e botões de rádio
- A implementação leva menos de um minuto
- Não é necessário usar muitos desenhos e outros recursos
O layout XML de um SwitchCompat é mostrado abaixo:
<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
é usado para exibir um texto ao lado do botão deslizante.
Exemplo de Botão de Alternância e Switch Android
Neste aplicativo, exibiremos dois botões de alternância e um botão Switch. O estado dos botões de alternância será exibido em um Snackbar quando o FloatingActionButton
for pressionado. O estado do botão Switch é alterado para verdadeiro sempre que o botão de ação do Snackbar for clicado. Ou o estado é exibido no Snackbar deslizando o interruptor.
Estrutura do Projeto do Botão de Alternância e Interruptor do Android
Código do Botão de Alternância do Android
O activity_main.xml
permanece o mesmo. O content_main.xml
contém dois Botões de Alternância e um Interruptor desativado por padrão, conforme mostrado no trecho de código abaixo:
<?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>
O MainActivity.java
é fornecido abaixo:
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) {
// Inflar o menu; isso adiciona itens à barra de ação se ela estiver presente.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Manipular cliques nos itens da barra de ação aqui. A barra de ação irá
// manipular automaticamente cliques no botão Início/Para cima, desde que
// você especifique uma atividade pai no 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.
Projeto de Botão de Alternância e Interruptor do Android
Referência: Doc do Android ToggleButton
Source:
https://www.digitalocean.com/community/tutorials/android-toggle-button-switch-example