Android'de Düğmeler: Pratik Rehber

Kerem Aydın·7 Temmuz 2026·⏱2 dk

Android'de bir düğme oluşturmak için — XML'de MaterialButton veya Jetpack Compose'da Button/OutlinedButton kullanın, Material Components kütüphanesini ekleyin; tıklamaları setOnClickListener (veya Compose'da onClick) ile işleyin ve stilleri temalar/stiller ile app:backgroundTint, app:cornerRadius gibi öznitelikler aracılığıyla belirleyin.

Hızlı Ekleme: XML'de MaterialButton

  1. build.gradle (Module: app) dosyasına şunu ekleyin:
implementation 'com.google.android.material:material:1.12.0'
  1. Layout içinde basit bir düğme örneği:
<com.google.android.material.button.MaterialButton
    android:id="@+id/myButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Bana Tıkla"
    app:icon="@drawable/ic_play" />

MaterialButton varsayılan olarak ripple efekti, elevation, ikonlar ve köşe yuvarlaklığını destekler. Kolay konumlandırma için ConstraintLayout/LinearLayout içine yerleştirin.

Deklaratif kullanıcı arayüzü için Jetpack Compose kullanın: Button ve OutlinedButton etkileşim ve test açısından daha kolaydır.

Activity/Fragment'te onClick İşleme (Kotlin)

ViewBinding veya Kotlin synthetic-free kod kullanılması önerilir.

Activity'de ViewBinding ile:

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.myButton.setOnClickListener {
            Toast.makeText(this, "Düğmeye tıklandı!", Toast.LENGTH_SHORT).show()
            // Örnek: startActivity(Intent(this, SecondActivity::class.java))
        }
    }
}

findViewById ile:

findViewById<MaterialButton>(R.id.myButton).setOnClickListener {
    // mantık
}

Birden fazla düğme için ortak listener:

val buttons = listOf(btnOk, btnCancel, btnRetry)
buttons.forEach { b -> b.setOnClickListener { v ->
    when (v.id) {
        R.id.btnCancel -> finish()
        R.id.btnRetry -> loadData()
    }
} }

Compose için:

Button(onClick = { /* eylem */ }) {
    Text("Düğme")
}

Stil Verme ve Material 3 — Pratik Öznitelikler

MaterialButton için temel öznitelikler:

  • app:backgroundTint — arka plan rengi
  • android:textColor — metin rengi (genellikle ?attr/colorOnPrimary)
  • app:cornerRadius — köşe yarıçapı
  • app:icon, app:iconTint, app:iconSize
  • app:elevation, app:strokeWidth, app:strokeColor

İnce (outlined) düğme örneği:

<com.google.android.material.button.MaterialButton
    style="@style/Widget.Material3.Button.OutlinedButton"
    app:strokeWidth="1dp"
    app:strokeColor="?attr/colorPrimary"
    app:icon="@drawable/ic_search"
    android:text="Ara"
    app:iconSize="20dp" />

styles.xml içinde özel stil:

<style name="CustomButton" parent="Widget.Material3.Button">
    <item name="android:textSize">16sp</item>
    <item name="app:cornerRadius">16dp</item>
    <item name="app:elevation">4dp</item>
</style>

Uygulama:

style="@style/CustomButton"

MaterialButton için android:background kullanmayın — bu, yerleşik animasyonları ve ripple efektini bozar. Arka planı backgroundTint aracılığıyla değiştirin.

Material Bileşenleri: FAB, Tonal, Extended FAB

  • Ana eylem için FloatingActionButton:
<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:src="@drawable/ic_add" />

Animasyon:

fab.setOnClickListener { fab.animate().rotationBy(360f).setDuration(300).start() }
  • Tonal ve Extended FAB, Material3 stilleri/bileşenleri aracılığıyla kullanılabilir; Compose'da — ExtendedFloatingActionButton.

Erişilebilirlik, Performans ve Test

  • Erişilebilirlik: İkonlar ve düğmeler için android:contentDescription tanımlayın, focusable ve doğru role/aria eşdeğerlerini kullanın.
  • Performans: RecyclerView'de DiffUtil kullanın; onBindViewHolder içinde yeniden kullanım olmadan gereksiz lambdalar oluşturmayın.
  • Destek: API 21+ üzerinde ve light/dark temalarda test edin.

Sık Yapılan Hatalar

  • backgroundTint yerine android:background kullanmak — Material animasyonlarını bozar.
  • contentDescription unutmak — kötü erişilebilirlik.
  • onClick içinde ağır işlemler yapmak (arka planda yürütün).
  • Fragment'larda view bağlamasını temizlememek — bellek sızıntıları (binding'i onDestroyView'da serbest bırakın).

SSS

  • Sola nasıl ikon eklenir? — MaterialButton'da app:icon ve app:iconSize kullanın.
  • Yuvarlak düğme nasıl yapılır? — FAB için FloatingActionButton kullanın; MaterialButton için cornerRadius değerini yüksekliğin yarısına eşit ayarlayın.
  • Düğme tema üzerinden stillendirilebilir mi? — Evet, stilleri themes.xml içinde tanımlayın ve Material3 parent widget'ları aracılığıyla uygulayın.

Android Studio'da önizleme ile deney yapın, stilleri birleştirin ve erişilebilirliği kontrol edin — böylece çoğu cihazda modern ve kullanışlı düğmeler elde edersiniz.