Uygulamanıza düğme ekleyin

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

Düğmeler, kullanıcı dokunduğunda hangi işlemin gerçekleşeceğini belirten metin veya simge ya da her ikisinden oluşur.

Düzeninizde üç şekilde düğme oluşturabilirsiniz. Bu, metin, simge veya her ikisini içeren bir düğme isteyip istemediğinize bağlıdır:

  
  <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, aşağıdakine benzer bir sonuç oluşturur:

Üç tür düğmeyi gösteren 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 tanımlamak için bir View.OnClickListener nesnesi oluşturun ve aşağıdaki örnekte olduğu gibi setOnClickListener(View.OnClickListener)'i çağırarak nesneyi 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üğmenizi şekillendirme

Düğmenizin görünümü (arka plan resmi ve yazı tipi), cihazlar arasında farklılık gösterir. Bunun nedeni, farklı üreticilerin cihazlarında giriş kontrolleri için genellikle farklı varsayılan stiller olmasıdır.

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

Kenarlıksız düğme

Faydalı olabilecek bir tasarım, "kenarlıksız" düğmedir. Kenarlıksız düğmeler, kenarlıkları veya arka planları olmaması dışında temel düğmelere benzer. Ancak yine de farklı durumlarda (ör. dokunulduğunda) görünümü değişir.

Kenarlıksız bir düğme oluşturmak için aşağıdaki örnekte gösterildiği 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ü tamamen 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 bağlı olarak görünümü değişen bir durum listesi kaynağı olmalıdır.

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

Düğme arka planınız için durum listesi çizilebilir öğesi 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 çeşitli boyutlardaki düğmelere sığmasını sağlamak için bit eşlemleri dokuz parçalı bit eşlemler olarak oluşturun.
  2. Bit eşlemleri projenizin res/drawable/ dizinine yerleştirin. Her bir bit eşleme resmini, 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. Bu dosyayı button_custom.xml gibi bir adla kaydedin. Aşağıdaki gibi bir XML 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, düğmenin mevcut durumuna göre resmini değiştiren tek bir çizilebilir kaynak tanımlar.

    • İlk <item>, düğmeye dokunulduğunda (etkinleştirildiğinde) kullanılacak bit eşlemi tanımlar.
    • İkincisi <item>, düğmeye odaklanıldığında kullanılacak bit eşlemi tanımlar. Örneğin, düğme trackball veya yön tuşları kullanılarak vurgulandığında.
    • Üçüncü <item>, düğme varsayılan durumdayken (ne dokunulmuş ne de odaklanılmış) kullanılacak bit eşlemi tanımlar.

    Bu XML dosyası, tek bir çizilebilir 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. Çizilebilir 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 değişen veya başka bir durumda olan bir düğmeyi tanımlama da dahil olmak üzere bu XML söz dizimi hakkında daha fazla bilgi için StateListDrawable başlıklı makaleyi inceleyin.