অ্যান্ড্রয়েড - নীচে শীটের STATE_HALF_EXPANDED রাষ্ট্রকে কীভাবে অক্ষম করবেন


14

আমার নীচে একটি শীট রয়েছে যা 2 টি রাজ্যের মধ্যে হওয়া উচিত STATE_COLLAPSEDএবং STATE_EXPANDED এটি ধসে পড়ার সময় হাইটটি হওয়া উচিত 200dpএবং যখন প্রসারিত হবে তখন এটি পূর্ণ স্ক্রীন হবে।

তাই আমি BottomSheetBehaviorসাথে সেট করছি

isFitToContents = false
peekHeight = 200dp

এবং আমি halfExpandedRatioঅন্যথায় একটি মান সেট করতে বাধ্য হই যখন STATE_HALF_EXPANDEDনীচের শীটে যখন পর্দার অর্ধেক লাগবে।

আমি ডাব্লু / com.google.android.material:material:1.1.0-rc01

STATE_HALF_EXPANDEDরাষ্ট্র নিষ্ক্রিয় করার কোন উপায় আছে ?

অথবা আমি আসলে সেট করা উচিত skipCollapsed=true, অনুপাত কি 200dp উপায়ে এবং কাজ পরিপ্রেক্ষিতে জিনিসটা STATE_HALF_EXPANDEDএবং STATE_EXPANDEDপরিবর্তে STATE_COLLAPSEDএবংSTATE_EXPANDED


নীচের শীটটি দেখতে কেমন তা দয়া করে আরও বিশদ সরবরাহ করুন।
ইউডি ..

@ ইউডি..আমি মনে করি না যে নীচের শিটের সামগ্রীটি এই ক্ষেত্রে প্রাসঙ্গিক। এটি আরও সাধারণ প্রশ্ন, নীচের শীটের কোনও একটি রাষ্ট্র নিষ্ক্রিয় করা সম্ভব
নোয়া ড্রাচ

1
আমার ব্যবহারের ক্ষেত্রে, এটি সেই সেটিং বলে মনে হয় এর halfExpandedRatio=0.25fএবং peekHeight = 200dpতারপর চিকিত্সা STATE_COLLAPSEDএবং STATE_HALF_EXPANDEDযেন তারা একই রাষ্ট্র সমাধান ইস্যু হয়। অন্যান্য ধারণা আছে যদি প্রশ্নটি খোলা রাখা।
নোয়া ড্রচ

আপনি এই লিঙ্কটি অনুসরণ করতে পারেন, এটি androidhive.info/2017/12/android-working-with-botom-sheet
ইউডি ..

আপনার উত্তরগুলির মধ্যে লক্ষ্যগুলি পূরণ করে যদি এই উত্তরগুলির একটি গ্রহণ করতে ভুলবেন না!
কমন্সওয়্যার

উত্তর:


3

অর্ধেক প্রসারিত অনুপাত মান 0 এবং 1 মধ্যে কিছু মানে সেট করা আবশ্যক একচেটিয়া , তাই কিছু খুব কম সংখ্যা আপনার উঁকি উচ্চতার তুলনায় কম হতে নিশ্চিত করার জন্য এই মান সেট, বলুন "0.0001f"। এই মান সঙ্গে আপনি এমনকি STATE_HALF_EXPANDEDরাজ্য দেখতে হবে না । রাজ্যগুলি STATE_EXPANDEDএবং এর মধ্যে ওঠানামা করবে STATE_COLLAPSED


বিকল্প সমাধান

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

ওপি দ্বারা বর্ণিত প্রয়োজনীয়তাগুলি হ'ল নীচের শীটটি উঁকি এবং উচ্চতার মধ্যে রূপান্তর হওয়া উচিত। উঁকিউত্তর উচ্চতা নিয়ে কোনও সমস্যা নেই, তবে ওপি isFitToContents = falseসম্পূর্ণ উচ্চতা পেতে নির্দিষ্ট করে। (আমি ধরে নিই যে তার নীচের শীটটি উপলভ্য স্থানের চেয়ে কম আকারে হতে পারে))

দুর্ভাগ্যক্রমে, যখন isFitToContents == falseএকটি অতিরিক্ত "অর্ধ-উচ্চতা" আচরণ চালু করা হয় যে ওপি এড়াতে চায় এবং তাই এই প্রশ্নটি।

"অর্ধ-উচ্চতা" আচরণের পাশাপাশি আরও একটি আচরণ প্রবর্তিত যা "সম্প্রসারিত অফসেট"। প্রসারিত অফসেটটি উল্লেখ করে যে পূর্ণ স্ক্রিন থেকে নীচে শীটটি কতটা বন্ধ হবে। 100fউদাহরণস্বরূপ, একটি মান 100pxসম্পূর্ণরূপে প্রসারিত হলে নীচের শীটের শীর্ষে একটি সীমানা ছাড়বে । প্রসারিত অফসেটের জন্য ডিফল্ট শূন্য।

isFitToContents == falseউপরে বর্ণিত ব্যতীত অন্য যে কোনও আচরণের সাথে পরিচয় করিয়ে দেওয়ার বিষয়ে আমি অবগত নই ।

সুতরাং, এই প্রয়োজনীয়তাগুলি বিবেচনা করে, আমরা কি "নীচের isFitToContents == trueউচ্চতা" সমস্যাটিকে এড়িয়ে চলার নির্দিষ্ট করে এমন একটি নীচের শীটটি ফ্যাশন করতে পারি যা উঁকি এবং উচ্চতার মাঝে চলে ? অ-শূন্য প্রসারিত অফসেটের কোনও প্রয়োজন নেই, তাই আমাদের এটি নিয়ে চিন্তা করতে হবে না।

এখানে একটি সংক্ষিপ্ত ডেমো অ্যাপ্লিকেশন প্রদর্শিত হচ্ছে যে আমরা ডান নীচের শীট কাঠামোর সাথে এই প্রয়োজনীয়তাগুলি পূরণ করতে পারি:

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

MainActivity5.kt

class MainActivity5 : BaseActivity() {  
    override fun onCreate(savedInstanceState: Bundle?) {  
        super.onCreate(savedInstanceState)  
        setContentView(R.layout.activity_main5)  

        val bottomSheet = findViewById<LinearLayout>(R.id.bottom_sheet)  
        val sheetBehavior: BottomSheetBehavior<LinearLayout> = BottomSheetBehavior.from(bottomSheet)  
        sheetBehavior.isFitToContents = true // the default  
  sheetBehavior.peekHeight = 200  

  // Log the states the bottom sheet passes through.  
  sheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {  
            override fun onStateChanged(bottomSheet: View, newState: Int) {  
                Log.d("MainActivity", "<<<< $newState = ${translateSheetState(newState)}")  
            }  

            override fun onSlide(bottomSheet: View, slideOffset: Float) {}  
        })  
    }  
}

BaseActivity.kt

open class BaseActivity : AppCompatActivity() {  

    protected fun translateSheetState(state: Int): String {  
        return when (state) {  
            BottomSheetBehavior.STATE_COLLAPSED -> "STATE_COLLAPSED"  
  BottomSheetBehavior.STATE_DRAGGING -> "STATE_DRAGGING"  
  BottomSheetBehavior.STATE_EXPANDED -> "STATE_EXPANDED"  
  BottomSheetBehavior.STATE_HALF_EXPANDED -> "STATE_HALF_EXPANDED"  
  BottomSheetBehavior.STATE_HIDDEN -> "STATE_HIDDEN"  
  BottomSheetBehavior.STATE_SETTLING -> "STATE_SETTLING"  
  else -> "Unknown state: $state"  
  }  
    }  
}

activity_main5.xml

<androidx.coordinatorlayout.widget.CoordinatorLayout 
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_orange_light"
        android:orientation="vertical"
        android:scrollbars="none"
        app:layout_behavior="@string/bottom_sheet_behavior">

        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="@string/short_text"
            android:textSize="16sp" />

    </LinearLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

যদি আমাদের একটি দীর্ঘ নীচের শীট থাকে তবে নিম্নলিখিত কাঠামো এটিকে স্ক্রোল করার জন্য কাজ করে:

activity_main6.xml

<androidx.coordinatorlayout.widget.CoordinatorLayout 
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_orange_light"
        android:orientation="vertical"
        android:scrollbars="none"
        app:layout_behavior="@string/bottom_sheet_behavior">

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/tv"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="16dp"
                android:text="@string/long_text"
                android:textSize="16sp" />
        </androidx.core.widget.NestedScrollView>
    </LinearLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

আপনার প্রাথমিক প্রতিক্রিয়া সম্পর্কে - আমি দেখেছি যে আমি যদি অর্ধ প্রসারিত অনুপাত নির্ধারণ করি তবে নীচের শীটের একটি খুব পাতলা ইঙ্গিতটি এখনও দৃশ্যমান। এবং যাইহোক, এটি এমন আচরণ নয় যা আমি সন্ধান করছি। যেমন আপনি "বিকল্প সমাধান" - এ উল্লিখিত হয়েছে - "নীচের শীটটি উঁকি দেওয়া উচ্চতা এবং পুরো উচ্চতার মধ্যে রূপান্তর হওয়া উচিত"
নোয়া ড্র্যাচ

আপনার "বিকল্প সমাধান" কাজ করছে বলে মনে হচ্ছে এবং এটি আমার প্রয়োজনীয় সমাধান, আমার প্রাথমিক পরীক্ষার মাধ্যমে বোঝানো হয়েছে যে আমাকে ব্যবহার করা দরকার isFitToContents = false, তবে এখন টেস্টিং isFitToContents = true
ডাব্লু

@ নোয়াড্রেচ যদি নীচের শীটটি আড়ালযোগ্য হয় তবে নীচের শীটে অফসেটটি কীভাবে গণনা করা হচ্ছে তার কারণে নীচে কমপক্ষে 1px প্রদর্শিত হবে। আমি ভাবছিলাম না যে শীটটি লুকানো থাকবে তবে 1px দেখানোর সাথে, sheetBehavior.state = BottomSheetBehavior.STATE_HIDDENঅর্ধেক প্রসারিত অবস্থায় পৌঁছালে শীটটি লুকিয়ে রাখতে বাধ্য করা যেতে পারে , তবে এটি কিছুটা জটিল হয়ে উঠছে। বিকল্প সমাধান আরও ভাল।
চেটিক্যাম্প

2

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

আপনি যদি ছবিটির মতো উপরেরটি দেখতে চান তবে নীচের কোডটি অনুসরণ করতে পারেন, এটি আপনাকে সহায়তা করবে !!!

public class CollectionsBottomSheet extends BottomSheetDialogFragment {
    private BottomSheetBehavior mBehavior;


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
        View view = View.inflate(getContext(), R.layout.collections_layout, null);
        LinearLayout linearLayout = view.findViewById(R.id.root);
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) linearLayout.getLayoutParams();
        params.height = getScreenHeight();
        linearLayout.setLayoutParams(params);
        dialog.setContentView(view);
        mBehavior = BottomSheetBehavior.from((View) view.getParent());
        return dialog;

    }

    @Override
    public void onStart() {
        super.onStart();
        mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
    }

    public static int getScreenHeight() {
        return Resources.getSystem().getDisplayMetrics().heightPixels;
    }
}



xml 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:fitsSystemWindows="true">


    <LinearLayout
        android:id="@+id/root"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/filter_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawableStart="@drawable/ic_cancel"
                android:drawableLeft="@drawable/ic_cancel"
                android:drawablePadding="30dp"
                android:gravity="center_vertical"
                android:padding="12dp"
                android:text="Filters"
                android:textColor="@color/black"
                android:textSize="18sp" />

            <View
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="10dp"
                android:layout_marginRight="10dp"
                android:padding="5dp"
                android:text="Reset ALL"
                android:textColor="#6f6f6f"
                android:textSize="12sp" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#d8dbdb" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_star"
            android:drawableLeft="@drawable/ic_star"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="GUEST RATINGS"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_money"
            android:drawableLeft="@drawable/ic_money"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="PRICE RANGE"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_loan"
            android:drawableLeft="@drawable/ic_star"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="PAY AT HOTEL"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_folder"
            android:drawableLeft="@drawable/ic_folder"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="COLLECTIONS"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_perm_identity_black_24dp"
            android:drawableLeft="@drawable/ic_perm_identity_black_24dp"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="FACILITIES"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_apartment"
            android:drawableLeft="@drawable/ic_apartment"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="CATEGORIES"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/sort_background"
            android:drawableStart="@drawable/ic_hotel_building"
            android:drawableLeft="@drawable/ic_hotel_building"
            android:drawablePadding="15dp"
            android:padding="15dp"
            android:text="ACCOMMODATION TYPE"
            android:textColor="#6f6f6f"
            android:textSize="16sp" />

    </LinearLayout>


</LinearLayout>

খুবই সুন্দর একটি উত্তর ... আমার দিন সংরক্ষিত
unownsp

1

addBottomSheetCallbackআপনার উপর একটি সেট করার চেষ্টা করুন BottomSheetBehavior, এবং আপনি যখন কোনও STATE_HALF_EXPANDEDরাজ্য শনাক্ত করেন , setState(STATE_HIDDEN)যখনই নীচের শীটটি অর্ধপথে রাজ্যে পৌঁছানোর চেষ্টা করবেন তখনই এটি কল করুন ।


সুন্দর ধারণা, আমার ক্ষেত্রে আমি রাষ্ট্রকে সেট করব STATE_COLLAPSEDএবং করব না STATE_HIDDEN। কিন্তু আমি থেকে রূপান্তরটি বাস্তবায়ন করার চেষ্টা STATE_HALF_EXPANDEDকরতে STATE_COLLAPSEDমতানুযায়ী ক্লাঙ্কি। রাজ্যগুলির মধ্যে রূপান্তরটি অ্যানিমেটেড হয়, সুতরাং আপনি নীচের শীটটি থামতে দেখেন STATE_HALF_EXPANDEDএবং তারপরে এটি চলে যায়STATE_COLLAPSED
Noa Drach

আপনি কি এটি 0 এর অর্ধেক প্রসারিত অনুপাতের সাথে একত্রিত করতে পারেন?
Ridcully

@ রিডকুলি - ২ টি সমস্যা এখানে - ১. অর্ধবৃত্তীয় অনুপাতটি অবশ্যই ০.২ এর উপরে হতে হবে এটি খুব কম মূল্যে সেট করা আমার কাছে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নামতে হবে। আমি এই পরামর্শটি ডাব্লু / আমার কার্যনির্বাহী halfExpandedState=0.25f, বি / সি সংযুক্ত করার কথা ভেবেছিলাম তখন রাজ্যগুলির মধ্যে স্থানান্তর এই সুস্পষ্ট হবে না। তবে, আমি নিশ্চিত নই যে আমার কাছে ইতিমধ্যে যা আছে তার তুলনায় এটি একটি বড় পরিবর্তন হবে
নোয়া ড্র্যাচ

1

আমার অনুরূপ ব্যবহারের ঘটনা ঘটেছে যেখানে লেআউটটি উচ্চতার এক তৃতীয়াংশ হতে হয়েছিল। আমি নিম্নলিখিতটি চেষ্টা করেছিলাম এবং এটি দুর্দান্ত কাজ করেছে।

<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/bottom_sheet_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/grey"
    android:clickable="true">

    <LinearLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/rounded_bottom_sheet_background"
        android:orientation="vertical"
        app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

আমাকে এগুলি পরিবর্তনশীল করতে হয়েছিল তাই নীচের শীটে নিম্নলিখিতটি সেট করেছিলাম তবে আপনি এটি এক্সএমএলেও করতে পারেন:

bottomSheet.setPeekHeight(200);// 200px
bottomSheet.setHideable(false);

বরখাস্ত করার জন্য, আমি নিম্নলিখিত ফাংশনটি ব্যবহার করে আমার খণ্ডে অ্যানিমেশন যুক্ত করেছি:

fragmentTransaction.setCustomAnimations(
                    R.anim.fade_in,
                    R.anim.fade_out,
                    R.anim.fade_in,
                    R.anim.fade_out)

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


1

সেটিং চেষ্টা করুন BottomSheetBehavior.setHalfExpandedRatio(0f)STATE_HALF_EXPANDEDস্পষ্টভাবে .setState () দিয়ে রাষ্ট্র নির্ধারণ না করে এমন আরও অনেক কিছুই নেই যা প্রভাবিত করবে । এটি একটি কাস্টম তৈরি করাও সম্ভব হওয়া উচিত Behavior, যা প্রসারিত CoordinatorLayout.Behavior<View>এবং নেই STATE_HALF_EXPANDED। যেমন। সমন্বয়কারী লেআউট আচরণের সাথে সমস্ত কিছুতে বাধা দেওয়া


0

আমি বিভিন্ন উপায়ে চেষ্টা করেছি, তবে কোনও কৌশলই নিখুঁতভাবে কাজ করে নি। আমি ইভেন্টগুলিতে বাধা দেওয়ার চেষ্টা করেছি BottomSheetBehavior.BottomSheetCallback {}এবং dismiss()কাস্টম যুক্তির উপর ভিত্তি করে কল করেছি তবে এটি একটি জটলা তৈরি করেছিল।

সুতরাং, শেষ অবধি, BottomSheetDialogFragmentআমি যুক্ত করেছি bottomSheetBehavior.isDraggable = falseএবং এর ফলে স্পর্শ করে নীচের শীটটি টেনে আনা হয়েছে এবং, আমি নিজে থেকেই ডায়লগকে বরখাস্ত করার ব্যবস্থা করেছি। খালি অঞ্চল সংলাপে যাইহোক বরখাস্ত হন।

মনে রাখবেন, নীচের শীটটি এখনও অ্যানিমেশন দিয়ে প্রসারিত। 'সত্যিই দুর্দান্ত!

ওভারক্রাইড মজা onCreateDialog (সেভড ইনস্ট্যান্সস্টেট: বান্ডেল?): ডায়ালগ dialog ভাল ডায়ালগ = সুপার.অনক্রিটডায়ালগ (সেভড ইনস্ট্যান্সস্টেট)

    dialog.setOnShowListener {
        val bottomSheetDialog = it as BottomSheetDialog
        val bottomSheet =
            bottomSheetDialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet)
                ?: return@setOnShowListener

        //Making background to transparent to avoid white background to given space margin.
        bottomSheet.setBackgroundColor(ContextCompat.getColor(context!!, R.color.transparent))

        val inflatedView = fragmentProfileDialogBinding.root
        val parent = inflatedView.parent as View

        val bottomSheetBehavior = BottomSheetBehavior.from(parent)
        bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
        bottomSheetBehavior.isDraggable = false
    }

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