আপনার অ্যাপে বোতাম যোগ করুন

কম্পোজ পদ্ধতিটি চেষ্টা করুন
জেটপ্যাক কম্পোজ হলো অ্যান্ড্রয়েডের জন্য প্রস্তাবিত UI টুলকিট। কম্পোজে কীভাবে কম্পোনেন্ট যোগ করতে হয় তা জানুন।

একটি বাটনে লেখা, আইকন অথবা উভয়ই থাকতে পারে, যা নির্দেশ করে যে ব্যবহারকারী সেটিতে ট্যাপ করলে কী কাজ ঘটবে।

আপনি টেক্সট, আইকন, নাকি উভয়সহ একটি বাটন চান, তার উপর নির্ভর করে আপনার লেআউটে তিনটি উপায়ের যেকোনো একটিতে একটি বাটন তৈরি করতে পারেন:

  
  <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) কল করে সেটিকে বাটনে অ্যাসাইন করুন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:

কোটলিন

findViewById<Button>(R.id.supabutton)
  .setOnClickListener {
      Log.d("BUTTONS", "User tapped the Supabutton")
  }

জাভা

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 অ্যাট্রিবিউটটি উল্লেখ করুন। বিকল্পভাবে, আপনি বাটনটির জন্য একটি স্টাইল প্রয়োগ করতে পারেন, যা HTML স্টাইলের মতোই কাজ করে এবং ব্যাকগ্রাউন্ড, ফন্ট ও সাইজের মতো একাধিক স্টাইল প্রোপার্টি নির্ধারণ করে। স্টাইল প্রয়োগ সম্পর্কে আরও তথ্যের জন্য, স্টাইল এবং থিম দেখুন।

বর্ডারবিহীন বোতাম

একটি কার্যকরী ডিজাইন হলো 'বর্ডারবিহীন' বাটন। বর্ডারবিহীন বাটনগুলো দেখতে সাধারণ বাটনের মতোই, তবে এগুলোর কোনো বর্ডার বা ব্যাকগ্রাউন্ড থাকে না, কিন্তু ট্যাপ করার মতো বিভিন্ন অবস্থায় এগুলোর চেহারা বদলে যায়।

একটি বর্ডারবিহীন বাটন তৈরি করতে, নিচের উদাহরণের মতো করে বাটনটিতে 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" />

কাস্টম ব্যাকগ্রাউন্ড

আপনি যদি আপনার বাটনের চেহারাকে পুরোপুরি নতুন রূপ দিতে চান, তাহলে একটি কাস্টম ব্যাকগ্রাউন্ড নির্দিষ্ট করে দিতে পারেন। তবে, সাধারণ কোনো বিটম্যাপ বা রঙ দেওয়ার পরিবর্তে, আপনার ব্যাকগ্রাউন্ডটিকে অবশ্যই একটি স্টেট লিস্ট রিসোর্স হতে হবে, যার চেহারা বাটনের বর্তমান অবস্থার ওপর নির্ভর করে পরিবর্তিত হয়।

আপনি একটি XML ফাইলে স্টেট লিস্টটি নির্ধারণ করতে পারেন, যেখানে বাটনের বিভিন্ন স্টেটের জন্য তিনটি ছবি বা রঙ উল্লেখ করা থাকবে।

আপনার বাটনের ব্যাকগ্রাউন্ডের জন্য একটি স্টেট লিস্ট ড্রয়েবল তৈরি করতে, নিম্নলিখিতগুলি করুন:

  1. বাটনের ব্যাকগ্রাউন্ডের জন্য তিনটি বিটম্যাপ তৈরি করুন, যা বাটনের ডিফল্ট, ট্যাপ করা এবং ফোকাস করা অবস্থাকে উপস্থাপন করবে। আপনার ছবিগুলো যাতে বিভিন্ন আকারের বাটনে ঠিকভাবে বসে, তা নিশ্চিত করতে বিটম্যাপগুলো নাইন-প্যাচ বিটম্যাপ হিসেবে তৈরি করুন।
  2. বিটম্যাপগুলো আপনার প্রোজেক্টের res/drawable/ ডিরেক্টরিতে রাখুন। প্রতিটি বিটম্যাপের নাম এমনভাবে দিন যাতে তা বাটনের অবস্থা প্রকাশ করে, যেমন button_default.9.png , button_pressed.9.png , এবং button_focused.9.png
  3. res/drawable/ ডিরেক্টরিতে একটি নতুন XML ফাইল তৈরি করুন। এটির নাম button_custom.xml মতো কিছু একটা দিন। নিচের মতো করে 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> সেই বিটম্যাপটি নির্ধারণ করে যা বাটনটি ডিফল্ট অবস্থায়, অর্থাৎ ট্যাপ করা বা ফোকাস করা না থাকলে, ব্যবহার করা হবে।

    এই XML ফাইলটি একটি একক ড্রয়েবল রিসোর্সকে উপস্থাপন করে। যখন কোনো Button তার ব্যাকগ্রাউন্ডের জন্য এটিকে রেফারেন্স করে, তখন বাটনটির অবস্থার উপর ভিত্তি করে প্রদর্শিত ছবিটি পরিবর্তিত হয়।

  4. ড্রয়েবল XML ফাইলটি বাটনের ব্যাকগ্রাউন্ড হিসেবে প্রয়োগ করুন:
    <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"  />

এই XML সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য, যার মধ্যে একটি বাটনকে কীভাবে নিষ্ক্রিয়, হোভার করা বা অন্য কোনো অবস্থায় সংজ্ঞায়িত করতে হয় তা অন্তর্ভুক্ত, StateListDrawable সম্পর্কে পড়ুন।