অ্যান্ড্রয়েডে কাস্টম টোস্ট: একটি সাধারণ উদাহরণ


117

আমি অ্যান্ড্রয়েড প্রোগ্রামিংয়ে নতুন। অ্যান্ড্রয়েডে কাস্টম টোস্ট বিজ্ঞপ্তি দেখানোর একটি সাধারণ উদাহরণ কী?


কাস্টম টোস্ট বলতে কী বোঝ? তুমি কি দেখানোর চেষ্টা করছ?
thepoosh

এটি আসল প্রশ্ন নয়। আপনার বিকাশকারী.অ্যান্ড্রয়েড
অ্যাডটাপস্ট

আমার একটি কাস্টম বার্তা বাক্স আছে। আপনি যদি এটি কাস্টমাইজ করতে পারেন এবং এতে একটি টাইমার যুক্ত করতে পারেন এবং এর চেহারা পরিবর্তন করতে পারেন তবে আমি এটি আপনার জন্য পোস্ট করছি। পারবে তুমি?
ববস

1
এখানে আপনি "কাস্টম টোস্ট" র মৌলিক উদাহরণ জানতে পারেন stackoverflow.com/questions/3500197/...
Jorgesys

উত্তর:


198

একটি কাস্টম টোস্টের নীচের কোডটি ব্যবহার করুন। এটি আপনাকে সাহায্য করতে পারে।

toast.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:background="#DAAA" >

    <ImageView android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginRight="10dp" />

    <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textColor="#FFF" />

</LinearLayout>

MainActivity.java

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
                               (ViewGroup) findViewById(R.id.toast_layout_root));

ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello! This is a custom toast!");

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

এবং কাস্টম টোস্টের জন্য নীচের লিঙ্কগুলিও দেখুন।

অ্যানালগ ঘড়ির সাথে কাস্টম টোস্ট

ইউটিউব: অ্যান্ড্রয়েড স্টুডিওতে বোতামের সাহায্যে কাস্টম টোস্ট তৈরি করা


8
"(ভিউগ্রুপ) সন্ধান ভিউবিআইআইডি (আর। আইড। টোস্ট_লেআউট_রোট)" "নাল" দিয়ে প্রতিস্থাপন করা যেতে পারে। কারণ আপনার ক্রিয়াকলাপে টোস্ট_লেআউট নেই তাই এটি যাইহোক সর্বদা নাল হবে।
স্টিভ.মিট

2
আমার কাস্টম টোস্টটি প্রদর্শিত হচ্ছে না কারণ আমি নতুন প্রতিবন্ধ লেআউটটিকে আমার কাস্টম টোস্টের রুটভিউ হিসাবে ব্যবহার করছি। আমি একবার লিনিয়ার লেআউটে পরিবর্তিত হয়ে গেলে, সমস্ত কিছুই নিখুঁতভাবে কাজ করে। তাই সতর্ক হতে হবে ...
চার্লস উডসন

ভিউবিআইআইডি (R.id.toast_layout_root) এর উদ্দেশ্য সম্পর্কে কি কেউ ব্যাখ্যা করতে পারে? এটি যেভাবেই হোক
নালাগুলি হতে চলেছে

আমিও মূল দৃষ্টিভঙ্গির উদ্দেশ্য (নাল) জানি না, তবে সরকারী দস্তাবেজগুলিতেও উপস্থিত রয়েছে, যদি কেউ ব্যাখ্যা করতে পারে তবে কেন দুর্দান্ত হবে! বিকাশকারী.অ্যান্ড্রয়েড / গাইড
নেস্টর পেরেজ

আপনি যদি FindViewById দ্বারা ক্র্যাশ হয়ে থাকেন তবে এটি ব্যবহার করুন: দেখুন বিন্যাস = inflater.inflate (R.layout.toast_layout, নাল) দেখুন;
বিটা মিরশাফী

38

একটি টোস্ট হ'ল সংক্ষিপ্ত সময়ের জন্য বার্তা দেখানোর জন্য; সুতরাং, আমার উপলব্ধি অনুসারে, আপনি এটিতে একটি চিত্র যুক্ত করে এবং ম্যাসেজের পাঠ্যের আকার, রঙ পরিবর্তন করে এটি কাস্টমাইজ করতে চান। যদি এটি সমস্ত হয় তবে আপনি এটি করতে চান, তারপরে একটি আলাদা লেআউট তৈরি করার প্রয়োজন নেই এবং এটি টোস্টের দৃষ্টান্তে স্ফীত করে দেওয়ার দরকার নেই।

ডিফল্ট টোস্টের ভিউতে এতে TextViewবার্তা দেখানোর জন্য একটি রয়েছে । সুতরাং, আমাদের যদি এর সংস্থান আইডি রেফারেন্স থাকে তবে আমরা TextViewএটির সাথে খেলতে পারি। সুতরাং এটি অর্জনের জন্য নীচে আপনি কী করতে পারেন:

Toast toast = Toast.makeText(this, "I am custom Toast!", Toast.LENGTH_LONG);
View toastView = toast.getView(); // This'll return the default View of the Toast.

/* And now you can get the TextView of the default View of the Toast. */
TextView toastMessage = (TextView) toastView.findViewById(android.R.id.message);
toastMessage.setTextSize(25);
toastMessage.setTextColor(Color.RED);
toastMessage.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_fly, 0, 0, 0);
toastMessage.setGravity(Gravity.CENTER);
toastMessage.setCompoundDrawablePadding(16);
toastView.setBackgroundColor(Color.CYAN);
toast.show();

উপরের কোডে আপনি দেখতে পারেন, আপনি টেক্সটভিউয়ের সাথে setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)যে কোনও অবস্থানের তুলনায় যে কোনও অবস্থানের মাধ্যমে টেক্সটভিউতে চিত্র যুক্ত করতে পারেন।

হালনাগাদ:

উপরোক্ত উদ্দেশ্যটি সহজ করার জন্য একটি বিল্ডার শ্রেণি লিখেছেন; এখানে লিঙ্কটি রয়েছে: https://gist.github.com/TheLittleNaruto/6fc8f6a2b0d0583a240bd78313ba83bc

HowToUse.ktউপরের লিঙ্কটি চেক করুন।

আউটপুট:

এখানে চিত্র বিবরণ লিখুন


এর খুব কম সম্ভাবনা রয়েছে, তবে তবুও, আমি মনে করি যে এটির জন্য একটি চেক TextViewথাকা উচিত, কেবল নিরাপদ থাকার জন্য এবং একটি চেক দ্বারা, আমি অর্থ নাল চেক বা টাইপ চেক। কেবলমাত্র, গুগল টোস্ট ক্লাসে পাঠ্য দেখানোর জন্য আইডি বা ভিউটি পরিবর্তন করার সিদ্ধান্ত নিয়েছে। যাইহোক ... +1
ড্রয়েডদেভ

1
সত্য! তবে যদি এটি পরিবর্তন হয়ে যায়, আপনি অস্তিত্ব না থাকায় আপনি যেভাবেই রিসোর্স আইডি অ্যাক্সেস করতে পারবেন না। তবে নিরাপদে থাকার পরেও, একটি NUL চেক আপনার জীবনকে সহজ করে তুলবে। @ড্রয়েডেভ পরামর্শ দেওয়ার জন্য ধন্যবাদ :)
TheLittleNaruto

16

ধাপ 1:

প্রথমে এতে কাস্টম টোস্টের জন্য একটি বিন্যাস তৈরি করুন res/layout/custom_toast.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_toast_layout_id"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFF"
    android:orientation="horizontal"
    android:padding="5dp" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:textColor="#000" />

</LinearLayout>

পদক্ষেপ 2: ক্রিয়াকলাপের কোডগুলিতে , উপরের কাস্টম ভিউটি পান এবং টোস্টের সাথে সংযুক্ত করুন:

// Get your custom_toast.xml ayout
LayoutInflater inflater = getLayoutInflater();

View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));

// set a message
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Button is clicked!");

// Toast...
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

আরও সহায়তার জন্য দেখুন কীভাবে আমরা অ্যান্ড্রয়েডে কাস্টম টোস্ট তৈরি করি:

http://developer.android.com/guide/topics/ui/notifiers/toasts.html


6

এখানে লিঙ্ক দেখুন । আপনি আপনার সমাধান খুঁজে। এবং চেষ্টা কর:

একটি কাস্টম টোস্ট ভিউ তৈরি করা

যদি কোনও সাধারণ পাঠ্য বার্তা পর্যাপ্ত না হয় তবে আপনি আপনার টোস্ট বিজ্ঞপ্তির জন্য একটি কাস্টমাইজড বিন্যাস তৈরি করতে পারেন। একটি কাস্টম বিন্যাস তৈরি করতে, এক্সএমএলে বা আপনার অ্যাপ্লিকেশন কোডে একটি ভিউ বিন্যাসটি সংজ্ঞায়িত করুন এবং সেট ভিউ (দেখুন) পদ্ধতিতে রুট ভিউ অবজেক্টটি পাস করুন।

উদাহরণস্বরূপ, আপনি নিম্নলিখিত XML (টোস্ট_লেআউটআউট.এমএমএল হিসাবে সংরক্ষিত) দিয়ে ডানদিকে স্ক্রিনশটে দৃশ্যমান টোস্টের জন্য লেআউটটি তৈরি করতে পারেন:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/toast_layout_root"
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="10dp"
            android:background="#DAAA"
>

    <ImageView android:id="@+id/image"
               android:layout_width="wrap_content"
               android:layout_height="fill_parent"
               android:layout_marginRight="10dp"
    />

    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent"
              android:textColor="#FFF"
    />
</LinearLayout>

লক্ষ করুন যে লিনিয়ারলআউট উপাদানটির আইডি হ'ল "টোস্ট_লাইআউট"। XML থেকে লেআউটটি স্ফীত করতে আপনাকে অবশ্যই এই আইডিটি ব্যবহার করতে হবে, এখানে প্রদর্শিত হিসাবে:

 LayoutInflater inflater = getLayoutInflater();
 View layout = inflater.inflate(R.layout.toast_layout,
                                (ViewGroup) findViewById(R.id.toast_layout_root));

 ImageView image = (ImageView) layout.findViewById(R.id.image);
 image.setImageResource(R.drawable.android);
 TextView text = (TextView) layout.findViewById(R.id.text);
 text.setText("Hello! This is a custom toast!");

 Toast toast = new Toast(getApplicationContext());
 toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
 toast.setDuration(Toast.LENGTH_LONG);
 toast.setView(layout);
 toast.show();

প্রথমে getLayoutInflater () (বা getSystemService ()) দিয়ে লেআউটআইনফ্লেটারটি পুনরুদ্ধার করুন এবং তারপরে স্ফীত (ইনট, ভিউগ্রুপ) ব্যবহার করে এক্সএমএল থেকে লেআউটটি স্ফীত করুন। প্রথম প্যারামিটারটি হ'ল বিন্যাস সংস্থান আইডি এবং দ্বিতীয়টি হ'ল রুট ভিউ View আপনি এই স্ফীত লেআউটটি লেআউটটিতে আরও দেখুন অবজেক্টগুলি সন্ধান করতে ব্যবহার করতে পারেন, তাই এখন ইমেজভিউ এবং টেক্সটভিউ উপাদানগুলির জন্য সামগ্রীটি ক্যাপচার এবং সংজ্ঞায়িত করুন। অবশেষে টোস্ট (প্রসঙ্গ) দিয়ে একটি নতুন টোস্ট তৈরি করুন এবং টোস্টের কিছু বৈশিষ্ট্য যেমন মহাকর্ষ এবং সময়কাল সেট করুন। তারপরে সেটভিউ (দেখুন) কে কল করুন এবং এটি স্ফীত লেআউটটি পাস করুন। আপনি এখন শো () কল করে নিজের কাস্টম বিন্যাসের সাথে টোস্টটি প্রদর্শন করতে পারেন।

দ্রষ্টব্য: যদি আপনি সেটভিউ (ভিউ) দিয়ে বিন্যাসটি সংজ্ঞায়িত না করেন তবে একটি টোস্টের জন্য পাবলিক কনস্ট্রাক্টর ব্যবহার করবেন না। আপনার যদি ব্যবহার করার মতো কাস্টম বিন্যাস না থাকে তবে টোস্ট তৈরি করতে আপনার অবশ্যই মেকটেক্সট (প্রসঙ্গ, ইনট, ইনট) ব্যবহার করতে হবে।


4

টোস্টের জন্য কাস্টম বিন্যাস custom_toast.xml,:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Custom Toast"
        android:gravity="center"
        android:id="@+id/custom_toast_text"
        android:typeface="serif"
        android:textStyle="bold"
        />
</LinearLayout>

এবং জাভা পদ্ধতি (এই পদ্ধতিতে কেবল টোস্ট বার্তা প্রেরণ করুন):

public void toast(String message)
{
    Toast toast = new Toast(context);
    View view = LayoutInflater.from(context).inflate(R.layout.image_custom, null);
    TextView textView = (TextView) view.findViewById(R.id.custom_toast_text);
    textView.setText(message);
    toast.setView(view);
    toast.setGravity(Gravity.BOTTOM|Gravity.CENTER, 0, 0);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.show();
}

3

আপনি কোড ডাউনলোড করতে পারেন এখানে

ধাপ 1:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnCustomToast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show Custom Toast" />
  </RelativeLayout>

ধাপ ২:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/custom_toast_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher"/>

        <TextView
            android:id="@+id/custom_toast_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="My custom Toast Example Text" />

</LinearLayout>

ধাপ 3:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {


    private Button btnCustomToast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnCustomToast= (Button) findViewById(R.id.btnCustomToast);
        btnCustomToast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // Find custom toast example layout file
                View layoutValue = LayoutInflater.from(MainActivity.this).inflate(R.layout.android_custom_toast_example, null);
                // Creating the Toast object
                Toast toast = new Toast(getApplicationContext());
                toast.setDuration(Toast.LENGTH_SHORT);

                // gravity, xOffset, yOffset
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                toast.setView(layoutValue);//setting the view of custom toast layout
                toast.show();
            }
        });
    }
}

2

আমি মনে করি ইন্টারনেট জুড়ে বেশিরভাগ কাস্টমটোস্ট এক্সএমএল-উদাহরণ একই উত্সের উপর ভিত্তি করে।

অ্যান্ড্রয়েড ডকুমেন্টেশন, যা আমার মতে খুব পুরানো। ফিল_প্যারেন্টকে আর ব্যবহার করা উচিত নয়। আমি xML.9.png এর সাথে মিশ্রণে মোড়ক_কন্টেন্ট ব্যবহার করতে পছন্দ করি। এইভাবে আপনি প্রদত্ত উত্সের আকার জুড়ে টোস্টব্যাকগ্রাউন্ডের সর্বনিম্ন আকার নির্ধারণ করতে পারেন।

যদি আরও জটিল টোস্টের প্রয়োজন হয় তবে এলএল এর পরিবর্তে ফ্রেম বা আপেক্ষিক বিন্যাস ব্যবহার করা উচিত।

toast.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/points_layout"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:layout_gravity="center"
    android:gravity="center" >

 <TextView
    android:id="@+id/points_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:layout_margin="15dp"
    android:text="@+string/points_text"
    android:textColor="@color/Green" />

</LinearLayout>

background.xml

<?xml version="1.0" encoding="utf-8"?>
<nine-patch
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:src="@drawable/background_96"
   android:dither="true"/>

পটভূমি_96 ব্যাকগ্রাউন্ড_96.9.png।

এটি খুব ভাল পরীক্ষা করা হয় না, এবং ইঙ্গিতগুলি প্রশংসা করা হয় :)



2

লেআউট_ * প্যারামগুলি যথাযথভাবে ব্যবহার না করা নিয়ে সমস্যা এড়াতে আপনাকে অবশ্যই আপনার কাস্টম লেআউটটি স্ফীত করার সময় এটি নিশ্চিত করতে হবে যে আপনি পিতামাতার হিসাবে একটি সঠিক ভিউগ্রুপ নির্দিষ্ট করেছেন।

অনেকগুলি উদাহরণ এখানে বাতিল করে দেয় তবে পরিবর্তে আপনি বিদ্যমান পিতামাতার হিসাবে টোস্ট ভিউগ্রুপটি পাস করতে পারেন।

val toast = Toast.makeText(this, "", Toast.LENGTH_LONG)
val layout = LayoutInflater.from(this).inflate(R.layout.view_custom_toast, toast.view.parent as? ViewGroup?)
toast.view = layout
toast.show()

এখানে আমরা বিদ্যমান কাস্টম ভিউয়ের সাথে টোস্ট ভিউটি প্রতিস্থাপন করব। আপনার নিজের বিন্যাসের "লেআউট" রেফারেন্স হয়ে গেলে আপনি এতে থাকা কোনও চিত্র / পাঠ্য দর্শন আপডেট করতে পারেন।

এই সমাধানটি কোনও "উইন্ডো ম্যানেজারের সাথে সংযুক্ত নয় এমন দেখুন" পিতামাতার হিসাবে নাল ব্যবহার করা থেকে ক্রাশকে বাধা দেয়।

এছাড়াও, কাস্ট্রেন্টলয়েআউটটিকে আপনার কাস্টম লেআউট রুট হিসাবে ব্যবহার করা এড়িয়ে চলুন, টোস্টের অভ্যন্তরে ব্যবহার করার সময় এটি কাজ করবে না বলে মনে হয়।


2

এটিই আমি ব্যবহার করেছি

AllMethodsInOne.java

public static Toast displayCustomToast(FragmentActivity mAct, String toastText, String toastLength, String succTypeColor) {

    final Toast toast;

    if (toastLength.equals("short")) {
        toast = Toast.makeText(mAct, toastText, Toast.LENGTH_SHORT);
    } else {
        toast = Toast.makeText(mAct, toastText, Toast.LENGTH_LONG);
    }

    View tView = toast.getView();
    tView.setBackgroundColor(Color.parseColor("#053a4d"));
    TextView mText = (TextView) tView.findViewById(android.R.id.message);

    mText.setTypeface(applyFont(mAct));
    mText.setShadowLayer(0, 0, 0, 0);

    tView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            toast.cancel();
        }
    });
    tView.invalidate();
    if (succTypeColor.equals("red")) {
        mText.setTextColor(Color.parseColor("#debe33"));
        tView.setBackground(mAct.getResources().getDrawable(R.drawable.toast_rounded_red));
        // this is to show error message
    }
    if (succTypeColor.equals("green")) {
        mText.setTextColor(Color.parseColor("#053a4d"));
        tView.setBackground(mAct.getResources().getDrawable(R.drawable.toast_rounded_green));
        // this is to show success message
    }


    return toast;
}

YourFile.java

কল করার সময় কেবল নীচে লিখুন।

AllMethodsInOne.displayCustomToast(act, "This is custom toast", "long", "red").show();

টোস্ট_উন্ডেড_রেড এটি খুঁজে পাওয়া যায় না। আমরা এটি কোথায় তৈরি করব?
goops 17

@ গুপস 17: এটি ড্রয়যোগ্য ফাইল যা ব্যাকগ্রাউন্ডে লাল, সবুজ রঙের। পরিবর্তে আপনি পটভূমির রঙ দিতে পারেন ...
ফাহিম পার্কার

1

মেইনএ্যাকটিভিটি.জভা ফাইলের জন্য কোড।

package com.android_examples.com.toastbackgroundcolorchange;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {

 Button BT;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 BT = (Button)findViewById(R.id.button1);
 BT.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {

 Toast ToastMessage = Toast.makeText(getApplicationContext(),"Change Toast Background color",Toast.LENGTH_SHORT);
 View toastView = ToastMessage.getView();
 toastView.setBackgroundResource(R.layout.toast_background_color);
 ToastMessage.show();

 }
 });
 }
}

কার্যকলাপ_মন.এক্সএমএল লেআউট ফাইলের জন্য কোড।

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="com.android_examples.com.toastbackgroundcolorchange.MainActivity" >

 <Button
 android:id="@+id/button1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"
 android:layout_centerVertical="true"
 android:text="CLICK HERE TO SHOW TOAST MESSAGE WITH DIFFERENT BACKGROUND COLOR INCLUDING BORDER" />

</RelativeLayout>

টোস্ট_ব্যাকগ্রাউন্ড_ রঙিন.এক্সএমএল লেআউট ফাইলের জন্য রেজ-> লেআউট ফোল্ডারে কোড।

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

 <stroke
    android:width="3dp"
    android:color="#ffffff" ></stroke>
<padding android:left="20dp" android:top="20dp"
    android:right="20dp" android:bottom="20dp" />
<corners android:radius="10dp" />
<gradient android:startColor="#ff000f"
    android:endColor="#ff0000"
    android:angle="-90"/>

</shape>

1

// একটি কাস্টম টোস্ট ক্লাস যেখানে আপনি পছন্দ মতো কাস্টম বা ডিফল্ট টোস্টটি দেখাতে পারেন)

public class ToastMessage {
    private Context context;
    private static ToastMessage instance;

    /**
     * @param context
     */
    private ToastMessage(Context context) {
        this.context = context;
    }

    /**
     * @param context
     * @return
     */
    public synchronized static ToastMessage getInstance(Context context) {
        if (instance == null) {
            instance = new ToastMessage(context);
        }
        return instance;
    }

    /**
     * @param message
     */
    public void showLongMessage(String message) {
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
    }

    /**
     * @param message
     */
    public void showSmallMessage(String message) {
        Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }

    /**
     * The Toast displayed via this method will display it for short period of time
     *
     * @param message
     */
    public void showLongCustomToast(String message) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        View layout = inflater.inflate(R.layout.layout_custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.ll_toast));
        TextView msgTv = (TextView) layout.findViewById(R.id.tv_msg);
        msgTv.setText(message);
        Toast toast = new Toast(context);
        toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.BOTTOM, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();


    }

    /**
     * The toast displayed by this class will display it for long period of time
     *
     * @param message
     */
    public void showSmallCustomToast(String message) {

        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        View layout = inflater.inflate(R.layout.layout_custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.ll_toast));
        TextView msgTv = (TextView) layout.findViewById(R.id.tv_msg);
        msgTv.setText(message);
        Toast toast = new Toast(context);
        toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.BOTTOM, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(layout);
        toast.show();
    }

}

1

টোস্ট কাস্টমাইজ করার সহজ উপায়,

private void MsgDisplay(String Msg, int Size, int Grav){
    Toast toast = Toast.makeText(this, Msg, Toast.LENGTH_LONG);
    TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
    v.setTextColor(Color.rgb(241, 196, 15));
    v.setTextSize(Size);
    v.setGravity(Gravity.CENTER);
    v.setShadowLayer(1.5f, -1, 1, Color.BLACK);
    if(Grav == 1){
        toast.setGravity(Gravity.BOTTOM, 0, 120);
    }else{
        toast.setGravity(Gravity.BOTTOM, 0, 10);
    }
    toast.show();
}

1

সমস্ত কোটলিন ব্যবহারকারীদের জন্য

আপনি নিম্নলিখিতগুলির মতো একটি এক্সটেনশন তৈরি করতে পারেন:

fun FragmentActivity.showCustomToast(message : String,color : Int) {
 val toastView = findViewById<TextView>(R.id.toast_view)
 toastView.text = message
 toastView.visibility = View.VISIBLE
 toastView.setBackgroundColor(color)

 // create a daemon thread
 val timer = Timer("schedule", true)

 // schedule a single event
 timer.schedule(2000) {
    runOnUiThread { toastView.visibility = View.GONE }
 }
}

1

এটি আমাদের নিজস্ব রীতিনীতি তৈরি করা খুব সহজ Toast

কেবল নীচের পদক্ষেপগুলি অনুসরণ করুন।

ধাপ 1

আপনি যে কাস্টম বিন্যাস তৈরি করতে চান তা তৈরি করুন

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:backgroundTint="@color/black"
    android:orientation="vertical"
    android:padding="@dimen/size_10dp"
    app:cardCornerRadius="@dimen/size_8dp"
    app:cardElevation="@dimen/size_8dp">

    <TextView
        android:id="@+id/txt_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="@dimen/size_12dp"
        android:textAlignment="center"
        android:textColor="@color/white"
        android:textSize="@dimen/text_size_16sp"
        tools:text="Hello Test!!" />

</androidx.cardview.widget.CardView>

ধাপ ২

এখন প্রসারিত কাস্টম ক্লাসটি তৈরি করুন Toast

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.shop.shoppinggare.R;

import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Text;

public class CustomToast extends Toast {
    private Context context;
    private String message;

    public CustomToast(Context context, String message) {
        super(context);
        this.context = context;
        this.message = message;
        View view = LayoutInflater.from(context).inflate(R.layout.toast_custom, null);
        TextView txtMsg = view.findViewById(R.id.txt_message);
        txtMsg.setText(StringUtils.capitalize(message));
        setView(view);
        setDuration(Toast.LENGTH_LONG);

    }


}

আমরা কাস্টম টোস্ট তৈরি করেছি।

ধাপ 3

এখন, অবশেষে, আমরা কীভাবে এটি ব্যবহার করতে পারি।

new CustomToast(contex,"message").show();

উপভোগ করুন !!


0

শীর্ষস্থানীয়, অ্যান্ড্রয়েড 11 এ টোস্টগুলিতে আপডেট

পটভূমি থেকে কাস্টম টোস্টগুলি অবরুদ্ধ করা হয়েছে, অ্যান্ড্রয়েড 11 ব্যবহারকারীদের কাস্টম টোস্ট দর্শনগুলি হ্রাস করে সুরক্ষা দেয়। সুরক্ষার কারণে এবং একটি ভাল ব্যবহারকারীর অভিজ্ঞতা বজায় রাখার জন্য, এই টোস্টগুলি অ্যান্ড্রয়েড 11 কে টার্গেট করে এমন অ্যাপ্লিকেশন দ্বারা ব্যাকগ্রাউন্ড থেকে প্রেরণ করা থাকলে কাস্টম ভিউযুক্ত সিস্টেম টোস্টগুলি ব্লক করে।

অ্যান্ড্রয়েড আর এ অ্যাডক্যালব্যাক () পদ্ধতি যুক্ত হয়েছে যখন আপনি টোস্ট (পাঠ্য বা কাস্টম) প্রদর্শিত হয় বা অদৃশ্য হয়ে যায় তবে আপনি যদি অবহিত হতে চান।

টোস্ট এপিআইয়ের সর্বাধিক গুরুত্বপূর্ণ পাঠ্যটি পরিবর্তিত হয় যে অ্যান্ড্রয়েড ১১ টার্গেট করা অ্যাপ্লিকেশনগুলির জন্যgetView() পদ্ধতিটি অ্যাক্সেস করার পরে পদ্ধতিটি বাতিল হয়ে যায়, সুতরাং, আপনার অ্যাপ্লিকেশনগুলিকে ফ্যাটাল এক্সেসপশন থেকে রক্ষা করা নিশ্চিত করুন, আপনি কী বলতে চাইছেন তা আপনি জানেন :)


0

টোস্টি নামের এই লাইব্রেরিটি ব্যবহার করে আমি মনে করি নিম্নলিখিত পদ্ধতির মাধ্যমে আপনার পছন্দসই টোস্ট তৈরি করতে যথেষ্ট নমনীয়তা রয়েছে -

Toasty.custom(yourContext, "I'm a custom Toast", yourIconDrawable, tintColor, duration, withIcon, 
shouldTint).show();

আপনি টোস্টিতে ফর্ম্যাট করা পাঠ্যও পাস করতে পারেন এবং এখানে কোড স্নিপেট


-1
val inflater = layoutInflater
val container: ViewGroup = findViewById(R.id.custom_toast_container)
val layout: ViewGroup = inflater.inflate(R.layout.custom_toast, container)
val text: TextView = layout.findViewById(R.id.text)
text.text = "This is a custom toast"
with (Toast(applicationContext)) {
    setGravity(Gravity.CENTER_VERTICAL, 0, 0)
    duration = Toast.LENGTH_LONG
    view = layout
    show()
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/custom_toast_container"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="8dp"
              android:background="#DAAA"
              >
    <ImageView android:src="@drawable/droid"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_marginRight="8dp"
               />
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textColor="#FFF"
              />
</LinearLayout>

তথ্যসূত্র: https://developer.android.com/guide/topics/ui/notifiers/toasts

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.