बटन में टेक्स्ट या आइकॉन या दोनों होते हैं. इनसे पता चलता है कि उपयोगकर्ता के टैप करने पर क्या कार्रवाई होती है.
अपने लेआउट में, तीन में से किसी एक तरीके से बटन बनाया जा सकता है. यह इस बात पर निर्भर करता है कि आपको टेक्स्ट वाला बटन चाहिए, आइकॉन वाला बटन चाहिए या दोनों चाहिए:
<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>
पिछला कोड कुछ इस तरह का जनरेट करता है:
क्लिक इवेंट का जवाब देना
जब उपयोगकर्ता किसी बटन पर टैप करता है, तो
Button
ऑब्जेक्ट को
क्लिक करने पर इवेंट मिलता है.
प्रोग्राम के हिसाब से इवेंट हैंडलर का एलान करने के लिए, एक View.OnClickListener
ऑब्जेक्ट बनाएं और setOnClickListener(View.OnClickListener)
को कॉल करके, उसे बटन को असाइन करें. उदाहरण के लिए:
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"); } });
बटन का स्टाइल तय करना
आपके बटन का बैकग्राउंड और फ़ॉन्ट, डिवाइसों के हिसाब से अलग-अलग दिखता है. ऐसा इसलिए होता है, क्योंकि अलग-अलग मैन्युफ़ैक्चरर के डिवाइसों में, इनपुट कंट्रोल के लिए अक्सर अलग-अलग डिफ़ॉल्ट स्टाइल होते हैं.
अलग-अलग बटन को अलग-अलग बैकग्राउंड के साथ पसंद के मुताबिक बनाने के लिए, android:background
एट्रिब्यूट के लिए ड्रॉबल या कलर रिसॉर्स का इस्तेमाल करें. इसके अलावा, बटन के लिए एक स्टाइल लागू किया जा सकता है. यह स्टाइल, एचटीएमएल स्टाइल की तरह काम करता है. इसकी मदद से, बैकग्राउंड, फ़ॉन्ट, और साइज़ जैसी कई स्टाइल प्रॉपर्टी तय की जा सकती हैं. स्टाइल लागू करने के बारे में ज़्यादा जानने के लिए, स्टाइल और थीम लेख पढ़ें.
बॉर्डरलेस बटन
"बिना बॉर्डर वाला" बटन एक ऐसा डिज़ाइन है जो काम का हो सकता है. बॉर्डरलेस बटन, सामान्य बटन जैसे होते हैं. हालांकि, इनमें बॉर्डर या बैकग्राउंड नहीं होता. हालांकि, स्क्रीन पर टैप किए जाने पर ये अलग-अलग स्थितियों में, फिर भी अलग-अलग दिखते हैं.
बॉर्डरलेस बटन बनाने के लिए, बटन पर borderlessButtonStyle
स्टाइल लागू करें, जैसा कि इस उदाहरण में दिखाया गया है:
<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" />
पसंद के मुताबिक बैकग्राउंड
अगर आपको बटन के लुक को वाकई फिर से परिभाषित करना है, तो कस्टम बैकग्राउंड तय करें. हालांकि, सामान्य बिटमैप या कलर देने के बजाय, आपका बैकग्राउंड, स्थिति की सूची के लिए एक संसाधन होना चाहिए. इसमें बटन की मौजूदा स्थिति के आधार पर, दिखने का तरीका बदलता है.
एक्सएमएल फ़ाइल में स्टेटस की सूची तय की जा सकती है. इसमें बटन की अलग-अलग स्थितियों के लिए इस्तेमाल की जाने वाली तीन इमेज या रंग तय किए जाते हैं.
अपने बटन के बैकग्राउंड के लिए, स्टेटस की सूची वाली ड्रॉआउबल बनाने के लिए, यह तरीका अपनाएं:
- बटन के बैकग्राउंड के लिए तीन बिटमैप बनाएं, जो बटन के डिफ़ॉल्ट, टैप किए गए, और फ़ोकस किए गए स्थितियों को दिखाते हों. यह पक्का करने के लिए कि आपकी इमेज, अलग-अलग साइज़ के बटन में फ़िट हों, बिटमैप को नाइन-पैच बिटमैप के तौर पर बनाएं.
- बिटमैप को अपने प्रोजेक्ट की
res/drawable/
डायरेक्ट्री में डालें. हर बिटमैप को नाम दें, ताकि बटन की स्थिति को दिखाया जा सके. जैसे,button_default.9.png
,button_pressed.9.png
, औरbutton_focused.9.png
. res/drawable/
डायरेक्ट्री में एक नई एक्सएमएल फ़ाइल बनाएं. इसे कुछ ऐसा नाम देंbutton_custom.xml
. एक्सएमएल को इस तरह डालें:<?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>
यह एक ड्रॉबल संसाधन तय करता है, जो बटन की मौजूदा स्थिति के आधार पर अपनी इमेज बदलता है.
- पहला
<item>
, बटन पर टैप करने (चालू करने) पर इस्तेमाल किए जाने वाले बिटमैप के बारे में बताता है. - दूसरा
<item>
, बटन पर फ़ोकस होने पर इस्तेमाल किए जाने वाले बिटमैप की जानकारी देता है. जैसे, ट्रैकबॉल या डायरेक्शनल पैड का इस्तेमाल करके बटन को हाइलाइट करने पर. - तीसरा
<item>
, बिट मैप के बारे में बताता है, ताकि बटन की डिफ़ॉल्ट स्थिति में होने पर उसका इस्तेमाल किया जा सके. साथ ही, न तो टैप किया गया हो और न ही फ़ोकस किया गया हो.
यह एक्सएमएल फ़ाइल, एक ड्रॉबल संसाधन दिखाती है. जब बटन के बैकग्राउंड के लिए
Button
का रेफ़रंस दिया जाता है, तो बटन की स्थिति के आधार पर इमेज बदल जाती है.- पहला
- ड्रॉबल एक्सएमएल फ़ाइल को बटन के बैकग्राउंड के तौर पर लागू करें:
<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" />
इस एक्सएमएल सिंटैक्स के बारे में ज़्यादा जानकारी पाने के लिए, StateListDrawable
के बारे में पढ़ें. इसमें, बंद किए गए, कर्सर घुमाए जाने पर दिखने वाले या किसी दूसरी स्थिति में मौजूद बटन को तय करने का तरीका भी शामिल है.