Uygulamanıza düğme ekleyin

Oluşturma yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da bileşenleri nasıl ekleyeceğinizi öğrenin.

Düğme, kullanıcı düğmeye dokunduğunda hangi işlemin yapılacağını bildiren bir metin, simge veya her ikisinden oluşur.

Düzeninizde düğme oluşturmak için aşağıdaki üç yöntemden birini kullanabilirsiniz: Metin içeren düğme, simge veya her ikisi:

  
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingLeft="16dp"
      android:paddingRight="16dp"
      android:orientation="vertical" >
  
      <Button
          android:id="@+id/supabutton"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="I'm a button" />
  
      <ImageButton
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:contentDescription="A tiny Android icon"
          android:src="@drawable/baseline_android_24"
          app:tint="#ff0000" />
  
      <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:drawableStart="@drawable/baseline_android_24"
          android:drawablePadding="4dp"
          android:drawableTint="#ff0000"
          android:text="I'm a button with an icon" />
  </LinearLayout>

Önceki kod, şuna benzer bir şey oluşturur:

Üç tür düğmeyi gösteren bir resim
Şekil 1. Üç düğme stili.

Tıklama etkinliklerine yanıt verme

Kullanıcı bir düğmeye dokunduğunda Button nesnesi bir tıklama etkinliği alır.

Etkinlik işleyiciyi programatik olarak bildirmek için bir View.OnClickListener nesnesi oluşturun ve aşağıdaki örnekte olduğu gibi setOnClickListener(View.OnClickListener) yöntemini çağırarak bunu düğmeye atayın:

Kotlin

findViewById<Button>(R.id.supabutton)
  .setOnClickListener {
      Log.d("BUTTONS", "User tapped the Supabutton")
  }

Java

Button button = (Button) findViewById(R.id.supabutton);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
      Log.d("BUTTONS", "User tapped the Supabutton");
    }
});

Düğmenizin stilini belirleme

Farklı üreticilerin cihazlarının giriş kontrolleri için genellikle farklı varsayılan stilleri olduğundan, düğmenizin görünümü (arka plan resmi ve yazı tipi) cihazlara göre değişir.

Düğmeleri farklı bir arka planla özelleştirmek için android:background özelliğini çekilebilir bir kaynak veya renk kaynağıyla belirtin. Alternatif olarak, düğme için arka plan, yazı tipi ve boyut gibi birden çok stil özelliği tanımlamak üzere HTML stillerine benzer şekilde çalışan bir stil uygulayabilirsiniz. Stilleri uygulama hakkında daha fazla bilgi için bkz. Stiller ve temalar.

Kenarlıksız düğme

Yararlı olabilecek tasarımlardan biri "kenarlıksız" düğmedir. Kenarlıksız düğmeler, kenarlıkları veya arka planları olmamasına rağmen farklı durumlarda (ör. dokunulduğunda) görünüşü değişmeye devam etmesi dışında temel düğmelere benzerler.

Kenarlıksız bir düğme oluşturmak için aşağıdaki örnekte olduğu gibi düğmeye borderlessButtonStyle stilini uygulayın:

<Button
  android:id="@+id/supabutton"
  style="?android:attr/borderlessButtonStyle"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="I'm a button" />

Özel arka plan

Düğmenizin görünümünü yeniden tanımlamak istiyorsanız özel bir arka plan belirtebilirsiniz. Ancak basit bir bit eşlem veya renk sağlamak yerine arka planınız, düğmenin mevcut durumuna göre görünümü değişen bir durum listesi kaynağı olmalıdır.

Durum listesini, farklı düğme durumları için kullanılacak üç resim veya renk tanımlayan bir XML dosyasında tanımlayabilirsiniz.

Düğme arka planınız için çekilebilir bir durum listesi oluşturmak üzere aşağıdakileri yapın:

  1. Düğme arka planı için varsayılan, dokunulan ve odaklanılan düğme durumlarını temsil eden üç bit eşlem oluşturun. Resimlerinizin farklı boyutlardaki düğmelere sığmasını sağlamak için bit eşlemleri dokuz yama bit eşlemleri olarak oluşturun.
  2. Bit eşlemleri projenizin res/drawable/ dizinine yerleştirin. Her bir bit eşlemi, temsil ettiği düğme durumunu yansıtacak şekilde adlandırın (ör. button_default.9.png, button_pressed.9.png ve button_focused.9.png).
  3. res/drawable/ dizininde yeni bir XML dosyası oluşturun. button_custom.xml gibi bir ad verin. XML'yi aşağıdaki gibi ekleyin:
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/button_pressed"
              android:state_pressed="true" />
        <item android:drawable="@drawable/button_focused"
              android:state_focused="true" />
        <item android:drawable="@drawable/button_default" />
    </selector>
    

    Bu özellik, düğmenin mevcut durumuna göre resmini değiştiren tek bir çekilebilir kaynağı tanımlar.

    • İlk <item>, düğmeye dokunulduğunda (etkinleştirildiğinde) kullanılacak bit eşlemi tanımlar.
    • İkinci <item>, düğmenin odaklandığı durumlarda (örneğin, iztopu veya yön tuşu kullanılarak düğmenin vurgulanması) kullanılacak bit eşlemi tanımlar.
    • Üçüncü <item>, düğme varsayılan durumda, ne dokunuldu ne de odaklanmış durumda olduğunda kullanılacak bit eşlemi tanımlar.

    Bu XML dosyası tek bir çekilebilir kaynağı temsil eder. Arka planı için bir Button tarafından referans verildiğinde gösterilen resim, düğmenin durumuna göre değişir.

  4. Çekilebilir XML dosyasını düğme arka planı olarak uygulayın:
    <Button
        android:id="@+id/button_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send"
        android:onClick="sendMessage"
        android:background="@drawable/button_custom"  />
    

Devre dışı bırakılmış, üzerine gelindiğinde veya başka bir durumda olan bir düğmenin nasıl tanımlanacağı dahil olmak üzere bu XML söz dizimi hakkında daha fazla bilgi edinmek için StateListDrawable makalesini okuyun.