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ı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:
- 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.
- 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
vebutton_focused.9.png
). 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.- İlk
- Ç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.