Çeşitli Android uygulamalarında, Facebook ayarlarında YouTube (bir sonraki videoyu otomatik oynatmaya geç), Truecaller (koyu temayı etkinleştir, aramaları engelle, çağrı kaydetme anahtarı vb.) gibi farklı anahtar türleri gördük, Facebook ayarlarında, Gmail, WhatsApp (güvenlik için parmak izi kilidini etkinleştirmek için) ve diğer birçok uygulamada bu buttonlar karşımıza çıkmaktadır.

Switch(Anahtar) nedir?
Android Studio’da Switch
, iki seçenek arasında seçim yapmak için kullanılabilen iki durumlu bir geçiş anahtarı widget’ıdır. Kullanıcıya basit bir kaydırıcı kontrolü gibi görünen bir seçeneğin açık ve kapalı durumunu görüntülemek için kullanılır. Kullanıcı, seçilen seçeneği seçmek için “parmağı” ileri geri sürükleyebilir veya anahtarın durumunu değiştirmek için basitçe dokunabiliriz.
Genellikle Hotspot, Flashlight, WiFi vb. açma/kapama seçimlerinde kullanılır. android.widget.CompoundButton
sınıfının alt sınıfıdır.
Switch, işleve göre bir ToggleButton’a benzer, ancak her ikisi de Switch’in anahtarın durumunu kontrol etmek için bir örümceğe sahip olması ve hem Switch’in hem de ToogleButton’un UI’sinin farklı olması gibi bazı farklılıklara sahiptir.
Artık switch
hakkında yeterli bilgiye sahibiz, android uygulamamıza bir switch
ekleyelim.
Adım 1: Yeni Proje Oluştur
- Android Studio’nuzu açın “Create New Android Project”e tıklayın (Android Studio‘yu nasıl kuracağınızı ve ilk Android projenizi nasıl oluşturacağınızı öğrenin)
- Proje şablonu penceresinden “Empty Activity“i seçin ve İleri’ye tıklayın.
- Uygulama Adını, Paket adını, kaydetme konumunu, dili (Java/Kotlin) seçin.
- Yukarıdaki bilgileri doldurduktan sonra Finish düğmesine tıklayın.
- Şimdi, projenin inşasını bitirmesini bekleyin.
Adım 2: Android Activity’ye Switch Ekleme
Şimdi app -> res -> layout ->activity_main.xml‘e gidin ve Switch‘i ekleyin, şimdi activity_main.xml dosyamız aşağıda gösterildiği gibi görünecektir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id = "@+id/mainLayout" xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context=".MainActivity"> <Switch android:id="@+id/switchBtn" android:layout_width = "wrap_content" android:layout_height = "wrap_content"/> </RelativeLayout> |
Yukarıdaki kodda, Android Activity varsayılan Switch anahtarını ekledik.
Örnek ile Switch’in Özellikleri:
Switch’in özellikleri ve bunları android uygulamasında switch’i özelleştirmek için nasıl kullanabileceğimiz hakkında daha fazla bilgi edelim.
id özelliği:
Belirli bir Switch
‘i tanımlayabileceğimiz Switch
için benzersiz bir kimlik belirlemek için kullanılır, bu, farklı Switch
‘leri farklı kimliklere sahip olduğu anlamına gelir.
checked özelliği
Bu özellik, Switch’in mevcut durumunu ayarlamak için kullanılır. Değer true veya false olabilir ve kontrol edilen özniteliğin varsayılan değeri false‘dır. check="true"
olarak ayarladığımızda, switch varsayılan olarak onaylı, false olarak ayarlandığında ise varsayılan olarak onaysız gelir.
1 2 3 4 5 6 7 | <Switch android:checked = "true" android:id="@+id/switchBtn" android:layout_width = "wrap_content" android:layout_height = "wrap_content"/> |
Java/Kotlin kodu ile switch durumunu değiştirmek için setChecked(Boolean b)
metodunu kullanabilirsiniz. Buradaki “b” true yada false olabilir.
Java
1 2 3 4 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setChecked(true); |
Kotlin
1 2 3 4 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setChecked(true) |
text özelliği:
Switch’in metnini ayarlamak için kullanılır. Metni doğrudan aşağıda gösterildiği gibi ayarlayabiliriz:
1 2 3 4 5 6 7 8 | <Switch android:text="Koyu Tema" android:checked = "true" android:id="@+id/switchBtn" android:layout_width = "wrap_content" android:layout_height = "wrap_content"/> |
Kod kullanarak dinamik olarak da metni değiştirebilirsiniz. setText(CharcaterSwequence cs)
metodu kullanarak Switch buton üzerindeki metni dinamik olarak aşağıdaki gibi değiştirebilirsiniz.
Java
1 2 3 4 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setText( "Koyu Tema" ); |
Kotlin
1 2 3 4 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setText( "Koyu Tema" ) |

gravity özelliği
Bir Switch’te metnin gravitiy değerini ayarlamak için kullanılır(Yazının Switch içindeki konumunu değiştirir). Varsayılan left
değeridir. right, left, center, center_horizontal, top, bottom, center_vertical, clip_horizontal, clip_vertical, end, fill, fill_horizontal, fill_vertical, ve start gibi birçok gravite değeri vardır. Gravity etkisini görmek için android:layout_width = "match_parent"
ayarlamalıyız.

Aşağıda gösterildiği gibi setGravity(int gravity) metodu kullanarak Java/Kotlin kodunda çalışma zamanında metin gravity değerini değiştirebiliriz:
Java
1 2 3 4 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setGravity(Gravity.RIGHT); |
Kotlin
1 2 3 4 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setGravity(Gravity.RIGHT) |
textOn ve textOff Özelliği
TextOn özelliği, Switch işaretli durumdayken (anlamına gelir) göstermek istediğimiz metni ayarlamak için kullanılır ve textOff özelliği, Switch işaretlenmemiş durumda (anlamına gelir) göstermek istediğimiz metni ayarlamak için kullanılır. Aşağıda gösterildiği gibi textOff ve textOn metnini göstermek için showText = “true” olarak ayarladık.
1 2 3 4 5 6 7 8 9 10 11 | <Switch android:textOff = "Kapalı" android:textOn = "Açık" android:showText = "true" android:text="Koyu Tema" android:checked = "true" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
Çıktı:


Ayrıca setTextOn(CharSeqence texton) ve setTextOff(CharSeqence textoff) fonksiyonlarını kullanarak Java/Kotlin kodundaki textOn ve textOff değerlerini aşağıda gösterildiği gibi değiştirebiliriz:
Java
1 2 3 4 5 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setTextOn( "Açık" ); switchBtn.setTextOff( "Kapalı" ); |
Kotlin
1 2 3 4 5 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setTextOn( "Açık" ) switchBtn.setTextOff( "Kapalı" ) |
textColor özelliği
Switch’in metin rengini ayarlamak için kullanılır. Renk değeri “#argb”, “#rgb”, “#rrggbb” veya “#aarrggbb” biçiminden herhangi biri olabilir.
1 2 3 4 5 6 7 8 9 | <Switch android:textColor = "#FF0000" android:text="Koyu Tema" android:checked = "true" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
Çıktı:

Aynı şeyi Java/Kotlin kodunda da setTextColor(int color)
veya setTextColor(ColorStateList colors)
fonksiyonlarını aşağıda gösterildiği gibi kullanarak yapabiliriz:
Java
1 2 3 4 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setTextColor(Color.RED); |
Kotlin
1 2 3 4 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setTextColor(Color.RED) |
textSize özelliği
Bu öznitelik, Switch metninin boyutunu ayarlamak için kullanılır. XML’de boyutu dp, in, mm, pt, px, sp olarak ayarlayabiliriz. Aşağıdaki örnekte metin boyutunu 32dp olarak ayarlıyoruz:
1 2 3 4 5 6 7 8 | <Switch android:textSize = "32dp" android:text="Koyu Tema" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
Çıktı:

setTextSize(float size)
ve setTextSize(int unit, float size
) fonksiyonlarını kullanarak Java/Kotlin kodundan metin boyutunu değiştirebiliriz:
Java
1 2 3 4 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setTextSize( 32F ); |
Kotlin
1 2 3 4 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setTextSize( 32F ) |
textStyle özelliği
Switch metninin metin stilini ayarlamak için kullanılır. Android’de bulunan 3 metin stili bold, normal ve italic . Varsayılan metin stili normaldir ve birden fazla metin stili kullanmak istiyorsak | operatörü kullanabilirsiniz. Örneğin, bold | italic.
1 2 3 4 5 6 7 8 | <Switch android:textStyle = "bold | italic" android:text="Koyu Tema" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
Aşağıda gösterildiği gibi setTypeface( Typeface tf)
ve setTypeface( Typeface typeface, int style )
işlevlerini kullanarak Java/Kotlin kodundan metin stilini değiştirebiliriz:
background özelliği
Anahtarın arka planını ayarlamak için kullanılır. Bir color yada drawable (image) veya herhangi bir özel xml dosyası olabilir. Bu eğitim için basit bir kırmızı renkli arka plan ekleyeceğiz:
1 2 3 4 5 6 7 8 9 | <Switch android:background = "#FF0000" android:textColor="#FFFFFF" android:text="Koyu Tema" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
Java/Kotlin kodundaki arka planı setBackgroundColor(int color)
işlevini kullanarak da ayarlayabiliriz:
Java
1 2 3 4 5 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setBackgroundColor( Color.RED); switchBtn.setTextColor( Color.WHITE); |
Kotlin
1 2 3 4 5 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setBackgroundColor( Color.RED) switchBtn.setTextColor( Color.WHITE) |
padding özelliği
İş boşluğu Switch’e ayarlamak için kullanılır. padding özniteliğini kullanarak üst, alt, sol, sağ padding’i aynı anda ayarlayabilir veya paddingLeft, paddingRight, paddingTop ve paddingBottom niteliklerini kullanarak üst, alt, sol, sağ için farklı dolgu ekleyebiliriz.
1 2 3 4 5 6 7 8 | <Switch android:padding = "16dp" android:text="Koyu Tema" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
yada
1 2 3 4 5 6 7 8 9 10 11 | <Switch android:paddingLeft = "12dp" android:paddingBottom = "10dp" android:paddingTop = "14dp" android:paddingRight = "6dp" android:text="Koyu Tema" android:id="@+id/switchBtn" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> |
Ayrıca aşağıda gösterildiği gibi setPadding( int left, int top, int right, int bottom )
metodu kullanarak Java/Kotlin kodundan dolgu ekleyebiliriz:
Java
1 2 3 4 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setPadding(12,14,6,10 ); |
Kotlin
1 2 3 4 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setPadding(12,14,6,10 ) |
Android Switch ile Listener Kullanımı
Şimdi, kullanıcının Switch‘e tıklamasını ve bazı eylemleri gerçekleştirmesini sağlamak için kullanılabilecek olay veya tıklama dinleyicisi işlevlerini ele alalım.
setOnClickListener(OnClickListener l) kullanarak dinleme
Switch’in tıklanıp tıklanmadığını kontrol etmek ve tıklamaya göre karar vermek istediğimizde bu dinleyiciyi kullanabiliriz. public void onClick(View view) fonksiyonunun içinde, boolean isChecked() fonksiyonunu kullanarak onaylanıp onaylanmadığını kontrol edeceğiz ve aşağıda gösterildiği gibi anahtarın durumuna göre kullanıcıya toast göstereceğiz:
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (switchBtn.isChecked()) //switch onaylı mı? { Toast.makeText(MainActivity.this, "Switch, tıklama dinleyicisi kullanılarak onaylı ", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Switch, tıklama dinleyicisi kullanılarak onaysız", Toast.LENGTH_SHORT).show(); } } }); |
Kotlin
1 2 3 4 5 6 7 8 9 10 11 | val switchBtn:Switch = findViewById(R.id.switchBtn) switchBtn.setOnClickListener{ if (switchBtn.isChecked()) //switch onaylı mı? { Toast.makeText(applicationContext, "Switch ile ONAYLANDI ", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(applicationContext, "Switch ile ONAY KALDIRILDI", Toast.LENGTH_SHORT).show(); } } |
setOnCheckedChangeListener(OnCheckedChangeListener l) kullanarak dinleme
Bu dinleyici, switch(anahtar) durumu değiştirildiğinde çağrılır, bu, anahtarı kapalı durumundan açık durumuna veya tam tersine değiştirdiğimiz anlamına gelir. onClickListener’dan temel farkı, bunun yalnızca durum değiştiğinde çağrılmasıdır. F
onCheckedChangeListener
içinde bir onCheckedChanged(CompoundButton compoundButton, boolean b)
anahtarın durumunu kontrol etmek ve boolean değerine göre işlevleri gerçekleştirmek için bir boolean değeri kullanabiliriz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Switch switchBtn = (Switch) findViewById(R.id.switchBtn); switchBtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b) //checking if the user turned on the switch { Toast.makeText(MainActivity.this, "Swtich onaylandı", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Switch onayı kaldırıldı", Toast.LENGTH_SHORT).show(); } } }); |
setOnCheckedChangeListener metodunu Kotlin kullanarak yapmak için buradaki bağlantıya tıklayın.
İhtiyaçlarımıza göre kullanabileceğimiz başka birçok dinleyici var. Bu 2 dinleyici en temel olanıdır ve bu dinleyicilerle herhangi bir sorun olmadan herhangi bir proje yapılabilir.
Daha fazla Android içeriği için Android Dersleri yazısını inceleyebilirsiniz.
2 Yorum