Düğmeler, kullanıcı dokunduğunda ne tür bir işlem yapılacağını belirten metin veya simge ya da her ikisinden oluşur.
Düzeninizde metin, simge veya her ikisini birden istediğinize bağlı olarak üç yöntemden birini kullanarak düğme oluşturabilirsiniz:
<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 sonuç 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 beyan etmek için bir View.OnClickListener
nesnesi oluşturun ve aşağıdaki örnekte olduğu gibi setOnClickListener(View.OnClickListener)
'ü çağırarak 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ında genellikle giriş kontrolleri için farklı varsayılan stiller bulunduğundan düğmenizin görünümü (arka plan resmi ve yazı tipi) cihazlara göre değişiklik gösterir.
Düğmeleri farklı arka planlarla özelleştirmek için android:background
özelliğini bir çizilebilir veya renk kaynağıyla belirtin. Alternatif olarak, arka plan, yazı tipi ve boyut gibi birden fazla stil özelliğini tanımlamak için HTML stillerine benzer şekilde çalışan bir stil uygulayabilirsiniz. Stil uygulama hakkında daha fazla bilgi için Stiller ve temalar başlıklı makaleyi inceleyin.
Kenarlıksız düğme
"Kenarlıksız" düğme, kullanışlı olabilecek tasarımlardan biridir. Kenarlıksız düğmeler, kenarlıkları veya arka planları olmaması dışında temel düğmelere benzer. Ancak dokunulduğunda olduğu gibi farklı durumlarda görünümleri 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 arka planınız basit bir bitmap veya renk yerine, düğmenin mevcut durumuna bağlı olarak görünümü değiştiren bir durum listesi kaynağı olmalıdır.
Durum listesini, farklı düğme durumları için kullanılacak üç resim veya rengi tanımlayan bir XML dosyasında tanımlayabilirsiniz.
Düğme arka planınız için bir durum listesi çizilebilir öğesi oluşturmak üzere aşağıdakileri yapın:
- Düğme arka planı için varsayılan, dokunulan ve odaklanan düğme durumlarını temsil eden üç bitmap oluşturun. Resimlerinizin çeşitli boyutlardaki düğmelere sığmasını sağlamak için bit eşlemleri dokuz yama bit eşlem olarak oluşturun.
- Bit eşlemelerini projenizin
res/drawable/
dizinine yerleştirin. Her bitmap'i, 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. Dosyayıbutton_custom.xml
gibi bir adla adlandırın. XML'i 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, resmini düğmenin mevcut durumuna göre değiştiren tek bir çizilebilir kaynak tanımlar.
- İlk
<item>
, düğmeye dokunulduğunda (etkinleştirildiğinde) kullanılacak bitmap'i tanımlar. - İkinci
<item>
, düğme odaklandığında (ör. düğme fare topu veya yön çubuğu kullanılarak vurgulandığında) kullanılacak bitmap'i tanımlar. - Üçüncü
<item>
, düğme varsayılan durumdayken (dokunulmadığında veya odaklanmadığında) kullanılacak bitmap'i tanımlar.
Bu XML dosyası tek bir çizilebilir kaynağı temsil eder. Arka planı için
Button
tarafından referans verildiğinde, gösterilen resim düğmenin durumuna göre değişir.- İlk
- drawable 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ışı, fareyle üzerine gelinen veya başka bir durumdaki bir düğmenin nasıl tanımlanacağı da dahil olmak üzere bu XML söz dizimi hakkında daha fazla bilgi edinmek için StateListDrawable
hakkındaki makaleyi okuyun.