Сегодня мы узнаем о переключателе Android и переключателе в приложении Android. Мы обсудим и реализуем виджет переключателя и виджет ToggleButton
в нашем приложении.
Переключатель Android
Переключатель Android используется для отображения состояния включения и выключения на кнопке. Switch – это еще один тип переключателя, который в основном используется с Android 4.0. Переключатель Android предоставляет элемент управления ползунком. Как ToggleButton, так и Switch являются подклассами класса CompoundButton
. Описанные ниже атрибуты XML используются для определения ToggleButton.
android:disabledAlpha
: Альфа, применяемая к индикатору при отключенииandroid:textOff
: Текст для кнопки, когда она не отмеченаandroid:textOn
: Текст для кнопки, когда она отмечена
Для программного изменения ToggleButton используются следующие методы.
CharSequence getTextOff()
: Возвращает текст, когда кнопка не отмеченаCharSequence getTextOn()
: Возвращает текст, когда кнопка отмеченаvoid setChecked(boolean checked)
: Изменяет состояние отметки этой кнопки
Переключатель Android
Переключатель Android или виджет SwitchCompat (часть библиотеки AppCompat, которая обеспечивает обратную совместимость для более низких версий Android до API v7) – это настраиваемый переключатель On-Off, который часто встречается в настройках телефона. Преимущества виджета Android Switch:
- Это лучшая замена флажкам и кнопкам-переключателям
- Реализация занимает менее минуты
- Не нужно использовать много ресурсов и других ресурсов
Макет XML SwitchCompat приведен ниже:
<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
используется для отображения текста рядом с переключателем.
Пример переключателя и кнопки Android Toggle
В этом приложении мы отображаем две кнопки-переключателя и одну переключатель. Состояние кнопок-переключателей отображается в SnackBar при нажатии FloatingActionButton
. Состояние переключателя изменяется на true, когда нажимается действующая кнопка SnackBar. Или состояние отображается в SnackBar при перемещении переключателя.
Структура проекта кнопки переключения и переключателя Android
Код кнопки переключения Android
activity_main.xml
остается тем же. content_main.xml
содержит две кнопки переключения и переключатель, по умолчанию установленный в положение false, как показано в следующем фрагменте кода:
<?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>
MainActivity.java
представлен ниже:
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) {
// Надуть меню; это добавляет элементы в панель действий, если она присутствует.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Обработайте щелчки на элементах панели действий здесь. Панель действий будет
// автоматически обрабатывать щелчки на кнопке Home/Up, если
// вы укажете родительскую активность в 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.
Скачать проект с кнопкой переключения и кнопкой переключения Android
Source:
https://www.digitalocean.com/community/tutorials/android-toggle-button-switch-example