এর শেষে ক্রস (এক্স) বোতামের সাথে সম্পাদনা পাঠ্য কীভাবে তৈরি করবেন?


198

EditTextক্রস বোতামযুক্ত এমন কোনও উইজেট রয়েছে কিম্বা এমন কোনও সম্পত্তি রয়েছে EditTextযার দ্বারা এটি স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়? আমি ক্রস বোতামটি যা লেখা আছে তা মুছে ফেলতে চাই EditText


2
এটির জন্য কোনও মানক উইজেট বলে মনে হয় না। তবে আপনি "অ্যান্ড্রয়েড এডিটেক্সট ক্লিয়ার বোতাম এক্স" এর জন্য গুগল অনুসন্ধানের সাথে কয়েকটি ভিন্ন পদ্ধতির সন্ধান পান। সুতরাং আমি অনুমান করি "ক্লিয়ার বোতামগুলি" এটিকে তারা বলে। এছাড়াও, একটি সম্পর্কিত প্রশ্নের উত্তর দেখুন: stackoverflow.com/questions/4175398/clear-edittext-on-click/...
HostileFork বলেছেন Dont ট্রাস্ট দঃপূঃ

আপনি এখানে উত্সটি ডাউনলোড করতে পারেন: github.com/GhOsTTT/editTextXbutton আপনার দিনটি খুব সুন্দর
Gökhan Musapaşaoğlu ヅ

উত্তর:


166

নিম্নলিখিত লেআউটটি ব্যবহার করুন:

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="9dp"
    android:padding="5dp">

    <EditText
        android:id="@+id/calc_txt_Prise"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"  
        android:layout_marginTop="20dp"
        android:textSize="25dp"
        android:textColor="@color/gray"
        android:textStyle="bold"
        android:hint="@string/calc_txt_Prise"
        android:singleLine="true" />

    <Button
        android:id="@+id/calc_clear_txt_Prise"      
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_gravity="right|center_vertical"
        android:background="@drawable/delete" />

</FrameLayout>

আপনি বোতামের আইডিও ব্যবহার করতে পারেন এবং এর অন ক্লিককলিস্টার পদ্ধতিতে আপনি যা কিছু করতে চান তা করতে পারেন।


8
এটি এটি করার একটি অদক্ষ উপায়। ইয়াঞ্চেঙ্কোর উত্তর হ'ল যৌগিক ড্রয়াবল ব্যবহারের সঠিক পদ্ধতির।
নুমান সালাতী

4
আপনি যদি এই সমাধানটি বেছে নিতে এবং লক্ষ্য করেন যে চিত্রটি অনেক বেশি প্রসারিত হয়েছে, আপনার সম্ভবত নিয়মিত বোতামের পরিবর্তে একটি ইমেজবটন ব্যবহার করা উচিত।
personne3000

3
যদিও এই সমাধানটি "অদক্ষ", এটি অন্ধ ব্যবহারকারীদের জন্য অনেক বেশি অ্যাক্সেসযোগ্য। একটি অঙ্কনযোগ্য ব্যবহার করে আপনার ব্যবহারকারীদের পাঠ্য সাফ করার জন্য খুব জটিল ক্রিয়াকলাপ করতে বাধ্য করা হবে - এমন কিছু যা দেখে ব্যবহারকারীরা এক্স বোতামটি দিয়ে দ্রুত করতে পারে।
ড্যানিয়েল মন্টেইরো

2
এ সম্পর্কে অদক্ষতা কী?
ডেনি

121

আপনি যদি ড্রয়েড পার্টস ব্যবহার করে থাকেন তবে আমি সবেমাত্র ক্লিয়ারেএলডিটেক্সট যুক্ত করেছি

কাস্টম ব্যাকগ্রাউন্ড এবং অ্যাকশনবার শেরলকabs__ic_clear_holo_light থেকে সেট করা পরিষ্কার আইকন দিয়ে দেখতে এটি দেখতে এখানে :

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


11
সর্বোত্তম সমাধান কারণ শ্রেণি প্রসারিত EditText। Thx @yanchenko
tbruyelle

2
@stephanek। আমি এটি বিকাশকারী শাখায় স্থির করেছি, 1.4.3 প্রকাশের অংশ হবে be
yanchenko

4
ধন্যবাদ! যদিও আপনি ড্রয়েড পার্টস এ একটি ক্লিয়ারযোগ্যআউটো কমপ্লিটটেক্সট ভিউও অন্তর্ভুক্ত করতে পারেন তবে এটি সত্যিই দুর্দান্ত। অন্য ব্যবহারকারীরাও এটি করার চেষ্টা করেন: DroidParts লাইব্রেরি ব্যবহার করুন, ক্লিয়ারেবলডিটেক্সট থেকে কোডটি অনুলিপি করুন এবং কেবল অটো কমপ্লিটটেক্সটভিউ প্রসারিত করুন।
রবিনডেকারুন

2
এই বোমা! আপনি এটি কোনও সাধারণ টেক্সট ওয়াচারের সাহায্যে টেক্সটওয়াচার অ্যাডাপ্টার নির্ভরতা পরিবর্তন করে এককভাবে ব্যবহার করতে পারেন।
পিমেন্টোসো

1
@ আয়ঞ্চেনকো আপনার বাস্তবায়নটি দেখেছেন। দেখে মনে হচ্ছে স্বীকৃত স্পর্শ অঞ্চলটি ছোট হওয়ায় এবং সম্পাদনা পাঠ্যের অভ্যন্তরে y অক্ষ বরাবর ডিফল্ট উচ্চতার চেয়ে বড় আকারের স্পর্শ ইভেন্টগুলি গ্রহণ করে একটি সম্পাদনা পাঠ্য রয়েছে between আপনার বাস্তবায়নটি পূর্ববর্তী এবং আমার ছিল। একই পরিস্থিতিতে আপনি একই কাজ করার সুপারিশ করবেন? অর্থাত্ একটি ছোট হিট বক্সের জন্য যান যা মিস-প্রেস করা যেতে পারে বা একটি বৃহত্তর হিট বাক্স থাকতে পারে, যেখানে প্রসারিত বা বৃহত্তর সম্পাদনা পাঠ্যের সাহায্যে প্রেসগুলি অঙ্কনযোগ্যের সীমার বাইরে ভাল হতে পারে।
জ্যাক। র‌্যামসডেন

63

অ্যান্ড্রয়েডের জন্য মেটালিয়াল ডিজাইনের উপাদানগুলির মাধ্যমে 2020 সমাধান:

আপনার গ্রেড সেটআপে উপাদান উপাদান যুক্ত করুন:

এখান থেকে সর্বশেষ সংস্করণটি দেখুন: https://maven.google.com/

implementation 'com.google.android.material:material:1.1.0'

বা যদি আপনি অ্যান্ড্রয়েডএক্স লিবস ব্যবহার করে আপডেট না করে থাকেন তবে আপনি এটিকে এটি যুক্ত করতে পারেন:

implementation 'com.android.support:design:28.0.0'

তারপর

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_text"
    app:endIconMode="clear_text">

  <com.google.android.material.textfield.TextInputEditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

</com.google.android.material.textfield.TextInputLayout>

মনোযোগ দিন: অ্যাপ: endIconMode = "Clear_text"

হিসাবে এখানে আলোচনা করা হয়েছে উপাদান নকশা ডক্স


10
এটি নতুন গৃহীত উত্তর হওয়া উচিত। আমার ক্ষেত্রে, আমি অ্যান্ড্রয়েডএক্স লাইব্রেরিতে আপডেট না করে প্রয়োগ করতে সক্ষম হইনি।
বেন


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


অ্যাপ্লিকেশনটি রয়েছে: endIconMode = "Clear_text" এর সাথে ওয়ার্কাইন রয়েছে <androidx.appcompat.widget.AppCompatEditText/>? আপনি কি আমাকে দয়া করে একইভাবে সাহায্য করতে পারেন
আরবাজ.ইন

32

এটি একটি কোটলিন সমাধান। এই সহায়ক সহায়কটি কিছু কোটলিন ফাইলের মধ্যে রাখুন-

fun EditText.setupClearButtonWithAction() {

    addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(editable: Editable?) {
            val clearIcon = if (editable?.isNotEmpty() == true) R.drawable.ic_clear else 0
            setCompoundDrawablesWithIntrinsicBounds(0, 0, clearIcon, 0)
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit
        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit
    })

    setOnTouchListener(View.OnTouchListener { _, event ->
        if (event.action == MotionEvent.ACTION_UP) {
            if (event.rawX >= (this.right - this.compoundPaddingRight)) {
                this.setText("")
                return@OnTouchListener true
            }
        }
        return@OnTouchListener false
    })
}

এবং তারপরে এটি onCreateপদ্ধতিতে নিম্নলিখিত হিসাবে ব্যবহার করুন এবং আপনার যেতে ভাল হবে-

yourEditText.setupClearButtonWithAction()

বিটিডাব্লু, আপনাকে R.drawable.ic_clearপ্রথমে যুক্ত করতে হবে বা পরিষ্কার আইকন। এইটি গুগল- https://matory.io/tools/icons/?icon=clear&style=baseline থেকে এসেছে


যদি আপনি this.clearFocus()প্রত্যাবর্তনের সত্য বিবৃতি দেওয়ার আগে onFocusChange
sertোকান

দারুণ ব্যাপার, আমি কেবল অ্যাপকম্প্যাটএডিটটেক্সট এ অঙ্কনযোগ্য বাম আইকন সেট করি এবং আমি যখন এই ফানসিওন কল করি তখন এটি মুছে যাবে আপনি কি দয়া করে আমাকে বলতে পারেন?
আরবাজ.ইন

@ আরবাজ.ইন এটি কল করার পদ্ধতির কারণে setCompoundDrawablesWithIntrinsicBounds(0, 0, clearIcon, 0)। আপনি এই ফাংশনে একটি নতুন পরম হিসাবে বাম অঙ্কনযোগ্য আইকন আইডি পাস করতে পারেন এবং এটিকে কলটিতে রাখতে পারেন।
গুলশান

@ গুলশান আমি একই কাজ করেছি এখনও সেই
আঁকানো

20

অ্যান্ড্রয়েডের সমর্থন লিবারারিতে একটি SearchViewক্লাস রয়েছে যা এটি ঠিকভাবে করে। ( EditTextযদিও থেকে প্রাপ্ত নয়, সুতরাং একটি SearchView.OnQueryTextListenerপরিবর্তে একটি ব্যবহার করতে হবে TextWatcher)

কোনও পাঠ্য ছাড়াই অনুসন্ধান দর্শন (এবং ইঙ্গিত পাঠ্য "অনুসন্ধান")

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

এক্সএমএলে এর মতো ব্যবহার করুন:

  <android.support.v7.widget.SearchView
            android:id="@+id/searchView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:iconifiedByDefault="false"
            android:queryHint="@string/SearchHint"
            app:iconifiedByDefault="false"
            app:queryHint="@string/SearchHint" />

16
Drawable x = getResources().getDrawable(R.drawable.x);
x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
mEditText.setCompoundDrawables(null, null, x, null);

এক্স, কোথায়:

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


8
তবুও আমাদের ঠিক একটি অনি ক্লিকলিস্টার বরাদ্দ করা দরকার? একটি দ্রুত অনুসন্ধান আমাকে দিয়েছে এই । ফ্রেমলেআউট একের সাথে যাওয়া ভাল সমাধান অনুমান করুন। ধন্যবাদ যদিও!
ভেনোম

12

আপনার জন্য drawable resourceস্ট্যান্ডার্ড অ্যান্ড্রয়েড চিত্রগুলি ব্যবহার করতে পারেন:

http://androiddrawables.com/Menu.html

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

android:background="@android:drawable/ic_menu_close_clear_cancel"

6

আপনি যদি কাস্টম ভিউ বা বিশেষ লেআউট ব্যবহার করতে না চান তবে আপনি (এক্স) বোতামটি তৈরি করতে 9-প্যাচ ব্যবহার করতে পারেন।

উদাহরণ: http://postimg.org/image/tssjmt97p/ (স্ট্যাকওভারফ্লোতে ছবি পোস্ট করার মতো পর্যাপ্ত পয়েন্ট আমার কাছে নেই)

ডান এবং নীচে কালো পিক্সেলগুলির ছেদটি সামগ্রী ক্ষেত্রের প্রতিনিধিত্ব করে। ওই অঞ্চলের বাইরের যে কোনও কিছুই প্যাডিং করছে। সুতরাং ব্যবহারকারী যে এক্সটিতে ক্লিক করেছে তা সনাক্ত করতে আপনি এমন একটি অনটচলিস্টাইনার সেট করতে পারেন:

editText.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_UP){
                    if (motionEvent.getX()>(view.getWidth()-view.getPaddingRight())){
                        ((EditText)view).setText("");
                    }
                }
                return false;
            }
        });

আপনার প্রয়োজন অনুসারে এই সমাধানটি কিছু ক্ষেত্রে আরও ভাল কাজ করতে পারে। আমি আমার এক্সএমএল কম জটিল রাখতে পছন্দ করি। আপনি বাম দিকে আইকন রাখতে চাইলে এটিও সহায়তা করে, আপনি কেবল 9 প্যাচে অন্তর্ভুক্ত করতে পারেন।


4

আমি নীচের মতো ইউআই অংশটি করেছি:

<RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:layout_marginTop="9dp"
            android:padding="5dp">

            <EditText
                android:id="@+id/etSearchToolbar"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:textSize="13dp"
                android:padding="10dp"
                android:textColor="@android:color/darker_gray"
                android:textStyle="normal"
                android:hint="Search"
                android:imeOptions="actionSearch"
                android:inputType="text"
                android:background="@drawable/edittext_bg"
                android:maxLines="1" />

            <ImageView
                android:id="@+id/ivClearSearchText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginRight="6dp"
                android:src="@drawable/balloon_overlay_close"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />


        </RelativeLayout>

edittext_bg.xml

<?xml version="1.0" encoding="utf-8"?>

<solid android:color="#FFFFFF" />

<stroke
    android:width="1dp"
    android:color="#C9C9CE" />

<corners
    android:bottomLeftRadius="15dp"
    android:bottomRightRadius="15dp"
    android:topLeftRadius="15dp"
    android:topRightRadius="15dp" />

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

ক্রস / ক্লিয়ার বোতাম হাইড / শো:

searchBox.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            if(charSequence.length() > 0){
                clearSearch.setVisibility(View.VISIBLE);
            }else{
                clearSearch.setVisibility(View.GONE);
            }
        }

        @Override
        public void afterTextChanged(Editable editable) {}
    });

অনুসন্ধানের স্টাফগুলি হ্যান্ডেল করুন (অর্থাত্ ব্যবহারকারী যখন সফট কী বোর্ড থেকে অনুসন্ধান করেন)

searchBox.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                String contents = searchBox.getText().toString().trim();
                if(contents.length() > 0){
                    //do search

                }else
                    //if something to do for empty edittext

                return true;
            }
            return false;
        }
    });`

সাফ / ক্রস বোতাম

  clearSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            searchBox.setText("");
        }
    });


2

উইজেটের সাথে এখানে সম্পূর্ণ লাইব্রেরি রয়েছে: https://github.com/opprime/EditTextField

এটি ব্যবহার করতে আপনার নির্ভরতা যুক্ত করা উচিত:

compile 'com.optimus:editTextField:0.2.0'

লেআউট.এক্সএমএল ফাইলটিতে আপনি উইজেট সেটিংসের সাথে খেলতে পারেন:

xmlns:app="http://schemas.android.com/apk/res-auto"
  • অ্যাপ্লিকেশন: ক্লিয়ারবটনমোড such এর মতো মান থাকতে পারে: কখনই না সম্পাদনা ছাড়া সম্পাদনা করুন

  • অ্যাপ: clearButtonDrawable

কর্মে নমুনা:

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


2

drawableEndআপনার মতো কেবল নিবিড় ক্রস রাখুন EditText:

<EditText
     ...
    android:drawableEnd="@drawable/ic_close"
    android:drawablePadding="8dp"
     ... />

এবং ক্লিক হ্যান্ডেল করতে এক্সটেনশন ব্যবহার করুন (বা OnTouchListenerসরাসরি আপনার ব্যবহার করুন EditText):

fun EditText.onDrawableEndClick(action: () -> Unit) {
    setOnTouchListener { v, event ->
        if (event.action == MotionEvent.ACTION_UP) {
            v as EditText
            val end = if (v.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL)
                v.left else v.right
            if (event.rawX >= (end - v.compoundPaddingEnd)) {
                action.invoke()
                return@setOnTouchListener true
            }
        }
        return@setOnTouchListener false
    }
}

এক্সটেনশন ব্যবহার:

editText.onDrawableEndClick {
    // TODO clear action
    etSearch.setText("")
}

1

আপনি এই স্নিপেটটি জয়দিপ উত্তর সহ একাধিক বোতামের জন্য ব্যবহার করতে পারেন। কেবল ইটি এবং বাটন উপাদানগুলির রেফারেন্স পাওয়ার পরে এটি কল করুন। আমি ভ্যাকোটার বোতামটি ব্যবহার করেছি যাতে আপনাকে বাটন উপাদানটি ইমেজবুটনে পরিবর্তন করতে হবে:

private void setRemovableET(final EditText et, final ImageButton resetIB) {

        et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus && et.getText().toString().length() > 0)
                    resetIB.setVisibility(View.VISIBLE);
                else
                    resetIB.setVisibility(View.INVISIBLE);
            }
        });

        resetIB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                et.setText("");
                resetIB.setVisibility(View.INVISIBLE);
            }
        });

        et.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {}
            @Override
            public void beforeTextChanged(CharSequence s, int start,
                                          int count, int after) {
            }
            @Override
            public void onTextChanged(CharSequence s, int start,
                                      int before, int count) {
                if(s.length() != 0){
                    resetIB.setVisibility(View.VISIBLE);
                }else{
                    resetIB.setVisibility(View.INVISIBLE);
                }
            }
        });
    }

0

আপনি যদি ফ্রেম বিন্যাসে থাকেন বা আপনি একটি ফ্রেম বিন্যাস তৈরি করতে পারেন আমি অন্য পদ্ধতির চেষ্টা করেছি ....

<TextView
    android:id="@+id/inputSearch"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableRight="@drawable/ic_actionbar"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/back_button"/>

<Button
    android:id="@+id/clear_text_invisible_button"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:layout_gravity="right|center_vertical"
    android:background="@color/transparent"
    android:layout_alignBaseline="@+id/inputSearch"
    android:layout_alignBottom="@+id/inputSearch"
    android:layout_alignRight="@+id/inputSearch"
    android:layout_alignEnd="@+id/inputSearch"
    android:layout_marginRight="13dp"
    />

এটি একটি সম্পাদনা পাঠ্য যেখানে আমি একটি সঠিক অঙ্কনযোগ্য হিসাবে ক্রস আইকন রাখি এবং এটির উপরে আমি স্বচ্ছ বোতামটি রাখি যা পাঠ্য সাফ করে।


0
    <EditText
    android:id="@+id/idSearchEditText"
    android:layout_width="match_parent"
    android:layout_height="@dimen/dimen_40dp"
    android:drawableStart="@android:drawable/ic_menu_search"
    android:drawablePadding="8dp"
    android:ellipsize="start"
    android:gravity="center_vertical"
    android:hint="Search"
    android:imeOptions="actionSearch"
    android:inputType="text"
    android:paddingStart="16dp"
    android:paddingEnd="8dp"
/>

EditText mSearchEditText = findViewById(R.id.idSearchEditText);
mSearchEditText.addTextChangedListener(this);
mSearchEditText.setOnTouchListener(this);


@Override
public void afterTextChanged(Editable aEditable) {
    int clearIcon = android.R.drawable.ic_notification_clear_all;
    int searchIcon = android.R.drawable.ic_menu_search;
    if (aEditable == null || TextUtils.isEmpty(aEditable.toString())) {
        clearIcon = 0;
        searchIcon = android.R.drawable.ic_menu_search;
    } else {
        clearIcon = android.R.drawable.ic_notification_clear_all;
        searchIcon = 0;
    }
    Drawable leftDrawable =  null;
    if (searchIcon != 0) {
        leftDrawable = getResources().getDrawable(searchIcon);
    }
    Drawable rightDrawable = null;
    if (clearIcon != 0) {
        rightDrawable = getResources().getDrawable(clearIcon);
    }

    mSearchEditText.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, null, rightDrawable, null);
}


@Override
public boolean onTouch(View aView, MotionEvent aEvent) {
    if (aEvent.getAction() == MotionEvent.ACTION_UP){
        if (aEvent.getX() > ( mSearchEditText.getWidth() - 
         mSearchEditText.getCompoundPaddingEnd())){
            mSearchEditText.setText("");
        }
    }
    return false;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.