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

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। 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")
  }

জাভা

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।