Android'de Düğmeler: Pratik Rehber
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
- build.gradle (Module: app) dosyasına şunu ekleyin:
implementation 'com.google.android.material:material:1.12.0'
- 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.