अपने ऐप्लिकेशन में बटन जोड़ना

लिखने का तरीका आज़माएं
Android के लिए, Jetpack Compose हमारा सुझाया गया यूज़र इंटरफ़ेस (यूआई) टूलकिट है. Compose में कॉम्पोनेंट जोड़ने का तरीका जानें.

इस बटन में टेक्स्ट या एक आइकॉन या दोनों होते हैं. इन दोनों से पता चलता है कि उपयोगकर्ता की कार्रवाई कब होगी उस पर टैप करता है.

आप अपने लेआउट में बटन बनाने के लिए, इन तीन में से किसी एक तरीके का इस्तेमाल कर सकते हैं. यह बटन अलग-अलग तरीकों से भले ही आपको टेक्स्ट वाला बटन, आइकॉन या दोनों चाहिए:

  
  <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" />

पसंद के मुताबिक बैकग्राउंड

अगर आपको बटन के लुक को वाकई फिर से परिभाषित करना है, तो कस्टम बैकग्राउंड तय करें. एक सामान्य बिटमैप या रंग देने के बजाय, आपका बैकग्राउंड एक राज्य सूची होना चाहिए बटन की मौजूदा स्थिति के आधार पर, पेज के लुक में बदलाव करने वाला संसाधन.

आप एक ऐसी एक्सएमएल फ़ाइल में राज्य की सूची तय कर सकते हैं जो यूआरएल के लिए इस्तेमाल की जाने वाली तीन इमेज या रंगों के बारे में बताती है बटन की अलग-अलग स्थितियां.

अपने बटन के बैकग्राउंड के लिए ड्रॉ करने लायक स्थिति की सूची बनाने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. बटन के बैकग्राउंड के लिए तीन बिटमैप बनाएं, जो डिफ़ॉल्ट, टैप किए गए, और फ़ोकस किए गए को दिखाते हों बटन की स्थितियां. यह पक्का करने के लिए कि आपकी इमेज अलग-अलग साइज़ के बटन पर फ़िट हो रही हैं, बिटमैप इस तरह बनाएं नौ-पैच बिटमैप होंगे.
  2. बिटमैप को अपने प्रोजेक्ट की res/drawable/ डायरेक्ट्री में रखें. हर बिट मैप को नाम दें बटन की स्थिति को दिखाने के लिए, जैसे कि button_default.9.png, button_pressed.9.png और button_focused.9.png.
  3. 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 से इसके लिए रेफ़रंस दिया जाता हो बैकग्राउंड में, बटन की स्थिति के आधार पर इमेज बदलती रहती है.

  4. ड्रॉ करने लायक एक्सएमएल फ़ाइल को बटन के बैकग्राउंड के तौर पर लागू करें:
    <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.