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ı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:
- 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.
- 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.pngvebutton_focused.9.png). res/drawable/dizininde yeni bir XML dosyası oluşturun. Bu dosyayıbutton_custom.xmlgibi 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
Buttontarafından referans verildiğinde, gösterilen resim düğmenin durumuna göre değişir.- İlk
- Ç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.