ক্রিয়াকলাপ শুরু হওয়ার পরে স্নাকবার কীভাবে প্রদর্শন করবেন?


103

Snackbar (android.support.design.widget.Snackbar)ক্রিয়াকলাপ শুরু হওয়ার সাথে সাথে আমরা যেমন দেখায় আমি অ্যান্ড্রয়েডটি দেখাতে চাই Toast

তবে সমস্যাটি হ'ল Snackbarএইরকম তৈরি করার সময় আমাদের প্যারেন্ট লেআউটটি নির্দিষ্ট করতে হবে :

Snackbar.make(parentlayout, "This is main activity", Snackbar.LENGTH_LONG)
            .setAction("CLOSE", new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                }
            })
            .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
            .show();

যখন আমরা Snackbarকোনও ক্লিক ইভেন্ট ছাড়াই ক্রিয়াকলাপের শুরুতে দেখি তখন প্যারেন্ট লেআউটটি কীভাবে দেওয়া যায় (এটি যদি ক্লিকের ইভেন্ট হয়ে থাকে তবে আমরা সহজেই পিতামাতার দৃষ্টিভঙ্গিটি পার করতে পারি)?


4
Onetouchcode.com/2016/12/24/use-snackbar-android-apps এ একটি নিবন্ধ লিখেছেন , এটি স্নাকবারের আরও বিশদ জানতে সহায়ক হবে
শৈলেন্দ্র

উত্তর:


221

এক্সএমএলের Viewভিতরে যে Activity'sকোনওটির দিকে কেবল নির্দেশ করুন । আপনি মূল ভিউগ্রুপকে একটি আইডি দিতে পারেন, উদাহরণস্বরূপ, এবং ব্যবহার করুন:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);    
   setContentView(R.layout.main_activity);
   View parentLayout = findViewById(android.R.id.content);
   Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG) 
        .setAction("CLOSE", new View.OnClickListener() {
            @Override 
            public void onClick(View view) {

            } 
        }) 
        .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
        .show(); 
   //Other stuff in OnCreate();
}

59
মূল দেখার জন্য, আপনি সাধারণত findViewById(android.R.id.content)এখানে নির্দেশিত হিসাবে ব্যবহার করতে পারেন stackoverflow.com/a/4488149/1518546
জন কমিংস

প্যারেন্টলয়আউট দেখুন = সন্ধান ভিউআইআইডি (R.id.root_view); 5.0 বা নিম্ন সংস্করণে নালপয়েন্টার ব্যতিক্রম ছোঁড়ে। এই সমস্যার সমাধান কিভাবে ?
আনন্দ সাবজানি

4
@ আনন্দসভজানি কোডটি আমার সাথে 5.0 এর জন্য নিখুঁতভাবে কাজ করছে এবং 5.0 এর নীচে, আপনার বিন্যাসে অবশ্যই কিছু ত্রুটি থাকতে হবে (রুট_ভিউ)। আপনি যদি খণ্ড ব্যবহার করছেন তবে আপনার অবশ্যই রটভিউ.ফাইন্ডভিউবিআইআইডি (R.id.your_parent_view) লিখতে হবে; এবং লেআউট নাম হিসাবে একই আইডি দিতে না।
সুধীশ মোহন

আমি বিশ্বাস করি আপনি যদি সমন্বয়কারী লেআউটকে মূল হিসাবে ব্যবহার না করেন তবে এটি নলপয়েন্টার এক্সসেপশনটিকে ছুড়ে ফেলে।
ইশান

সমর্থন নকশা গ্রন্থাগারটি অন্তর্ভুক্ত করতে ভুলবেন না: 'com.android.support:design:27.0.0'
নিকোলা

30

এখন অবধি স্নাকবার প্রদর্শন করতে আমার নিজেকে সমস্যা হয়েছে। এখানে একটি স্নাকবার প্রদর্শন করার সহজ উপায়। এটিকে আপনার প্রধান ক্রিয়াকলাপ শুরু হিসাবে প্রদর্শন করতে, কেবল আপনার দুটি ভিতরে এই দুটি লাইন রাখুনOnCreate()

    Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
    snackbar.show();

পিএস ঠিক নিশ্চিত করুন যে আপনি অ্যান্ড্রয়েড ডিজাইন সমর্থন আমদানি করেছেন। (প্রশ্নে উল্লিখিত হিসাবে)।

কোটলিনের জন্য,

Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_SHORT).show()

8

এটা চেষ্টা কর

Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
                        .setAction("Submit", mOnClickListener)
                        .setActionTextColor(Color.RED)
                        .show();

3

অনক্রিটে এই পদ্ধতিটি কল করুন

Snackbar snack = Snackbar.make(
                    (((Activity) context).findViewById(android.R.id.content)),
                    message + "", Snackbar.LENGTH_SHORT);
snack.setDuration(Snackbar.LENGTH_INDEFINITE);//change Duration as you need
            //snack.setAction(actionButton, new View.OnClickListener());//add your own listener
            View view = snack.getView();
            TextView tv = (TextView) view
                    .findViewById(android.support.design.R.id.snackbar_text);
            tv.setTextColor(Color.WHITE);//change textColor

            TextView tvAction = (TextView) view
                    .findViewById(android.support.design.R.id.snackbar_action);
            tvAction.setTextSize(16);
            tvAction.setTextColor(Color.WHITE);

            snack.show();

2

শো স্নাক বারের জন্য একটি কার্যকারিতা

fun showSnackBar(activity: Activity, message: String, action: String? = null,
    actionListener: View.OnClickListener? = null, duration: Int = Snackbar.LENGTH_SHORT) {
    val snackBar = Snackbar.make(activity.findViewById(android.R.id.content), message, duration)
        .setBackgroundColor(Color.parseColor("#CC000000")) // todo update your color
        .setTextColor(Color.WHITE)
    if (action != null && actionListener!=null) {
        snackBar.setAction(action, actionListener)
    }
    snackBar.show()
}

ক্রিয়াকলাপে ব্যবহার করে উদাহরণ

  showSnackBar(this, "No internet")
  showSnackBar(this, "No internet", duration = Snackbar.LENGTH_LONG)
  showSnackBar(activity, "No internet", "OK", View.OnClickListener { 
       // handle click 
  })

টুকরা ব্যবহার করে উদাহরণ

  showSnackBar(getActivity(), "No internet")

আশা করি এটি সাহায্য করবে


1

আপনি এই লাইব্রেরি চেষ্টা করতে পারেন। এটি অ্যান্ড্রয়েড ডিফল্ট স্নাকবারের জন্য একটি মোড়ক। https://github.com/ChathuraHettiarachchi/CSnackBar

Snackbar.with(this,null)
    .type(Type.SUCCESS)
    .message("Profile updated successfully!")
    .duration(Duration.SHORT)
    .show();

এটিতে একাধিক প্রকারের স্নাকবার এবং এমনকী একটি কাস্টমভিউ সংহত স্নাকবার রয়েছে


1

এটি অনক্রিটের ভিতরে নিম্নলিখিত কোডগুলি ব্যবহার করেই করা যেতে পারে। অ্যান্ড্রয়েডের ডিফল্ট বিন্যাস ব্যবহার করে

Snackbar.make(findViewById(android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();

অ্যান্ড্রয়েড সংস্করণ 5.x - হঠাৎ getWindow().getDecorView()সমস্ত স্ক্রিন ফিরে আসুন, 'নীচে বোতাম' অন্তর্ভুক্ত করুন (যেমন হোম, পিছনে ইত্যাদি)। সুতরাং আমার
নাস্তাটি

আপডেট হওয়া উত্তরটি পরীক্ষা করুন। এটি আপনার সমস্যার সমাধান করবে। অ্যান্ড্রয়েডের ডিফল্ট লেআউটটি ব্যবহার করুন
জারিন রকস

হ্যাঁ, যখন আমি থেকে পরিবর্তিত windowকরা android.R.id.contentসব শুরু হবে। তাই ভবিষ্যতে এটির সাথে অন্য কারও সমস্যা সমাধানের জন্য আমি আমার মন্তব্য লিখেছিলাম)
alena_fox_spb

0

আপনি আপনার সমস্ত ক্রিয়াকলাপের জন্য একটি সুপার ক্লাস সংজ্ঞায়িত করতে পারেন এবং পিতামাতার ক্রিয়াকলাপে একবারে দর্শনটি খুঁজে পেতে পারেন।

উদাহরণ স্বরূপ

AppActivity.java:

public class AppActivity extends AppCompatActivity {

    protected View content;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        changeLanguage("fa");
        content = findViewById(android.R.id.content);
    }
}

এবং আপনার স্ন্যাকসটি আপনার অ্যাপ্লিকেশনটির প্রতিটি ক্রিয়াকলাপে এটির মতো দেখায়:

Snackbar.make(content, "hello every body", Snackbar.LENGTH_SHORT).show();

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

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