Android Studio'da Düğmeler: Hızlı Pratik Kılavuz
Button eklemek ve işleyiciyi yapılandırmak için: Benzersiz bir id ile layout'a Button yerleştirin, kısıtlamaları (ConstraintLayout için) ayarlayın, ardından Activity'de ViewBinding veya findViewById aracılığıyla referans alın ve setOnClickListener çağırın — aşağıdaki örnek hatasız çalışır.
Layout'a Button Ekleme
- res/layout/activity_main.xml dosyasını açın.
- Button'u ConstraintLayout (önerilir) veya RelativeLayout içine yerleştirin.
ConstraintLayout için örnek:
<Button
android:id="@+id/myButton"
android:layout_width="200dp"
android:layout_height="60dp"
android:text="Tıkla!"
android:textSize="18sp"
android:textColor="#FFFFFF"
android:backgroundTint="#2196F3"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
ConstraintLayout'ta her zaman kısıtlamaları ayarlayın — aksi takdirde öğe düzenleyicide "süzülür".
RelativeLayout kullanıyorsanız, android:layout_centerInParent="true" gibi öznitelikleri uygulayın.
Düğmenin Görünümünü Ayarlama
- Renkler:
android:backgroundTintveandroid:textColor. - Boyut:
android:textSize="18sp",dpüzerinden sabit boyut. - Stil: Material stillerini uygulayın, örneğin
style="@style/Widget.Material3.Button"ve themes.xml içindeTheme.Material3.DayNightüst temasını kullanın.
API seviyesi daha düşük cihazlarda ripple efekti için android:foreground="?attr/selectableItemBackground" kullanın veya yerel ripple için MaterialButton (Material Components'tan) kullanın.
Activity'de Tıklama İşleyicisi (Kotlin)
Önerilen yöntem — ViewBinding. build.gradle (Module: app) içinde android bloğunda:
buildFeatures {
viewBinding true
}
MainActivity.kt:
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()
// veya startActivity(...), API çağrısı, animasyon vb.
}
}
}
ViewBinding olmadan alternatif:
val myButton = findViewById<Button>(R.id.myButton)
myButton.setOnClickListener { /* ... */ }
viewBinding'i etkinleştirdikten sonra Rebuild Project yapın — aksi takdirde ActivityMainBinding sınıfı oluşturulmaz.
Sık Karşılaşılan Hatalar
- Düğme tıklanmıyor: View'in örtülüp örtülmediğini ve
android:clickable="true"olup olmadığını kontrol edin. - ID Activity'de bulunamıyor: Projeyi derleyin (Build > Rebuild Project).
- MaterialButton'da arka plan değişmiyor:
backgroundyerinebackgroundTintkullanın. - findViewById'de NullPointerException: setContentView'in çağrıdan önce ayarlandığından emin olun.
SSS
- Her zaman ViewBinding kullanmak gerekir mi? Tip güvenliği ve basitlik açısından, özellikle yeni projelerde önerilir.
- Düğmeyi yuvarlak nasıl yaparım? cornerRadius ile drawable içinde bir shape oluşturun ve
android:backgroundüzerinden uygulayın veyaapp:cornerRadiusile MaterialButton kullanın. - İşleyiciyi doğrudan XML'de atamak mümkün mü? Evet — Activity'de
android:onClick="onMyButtonClick"aracılığıyla public birfun onMyButtonClick(view: View)metodu olmalıdır, ancak bu yöntem daha az açıklayıcıdır ve dikkat gerektirir.
Gerekirse MaterialButton, özel drawable düğmesi veya Jetpack Compose için örnekler ekleyebilirim.