অ্যান্ড্রয়েডে নেভিগেশন ড্রয়ারটি খোলে এমন সোয়াইপ অঙ্গভঙ্গিটি অক্ষম করুন


187

আমি গুগলের ন্যাভিগেশন ড্রয়ার গাইড অনুসরণ করেছি এবং আমি এটি ট্যাব এবং অঙ্গভঙ্গি সহ কোনও ক্রিয়াকলাপে যুক্ত করতে চাই।

আমি নেভিগেশন ড্রয়ারটি খোলার অঙ্গভঙ্গিটি অক্ষম করতে চাই, এটি কীভাবে করবেন তার কারও কি ধারণা আছে?

উত্তর:


438

আপনার ব্যবহার করা উচিত:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

এটি আমার পক্ষে কাজ করেছিল, ড্রয়ারটি খোলার জন্য সোয়াইপ অক্ষম ছিল।

যদি এটি এখনও কাজ না করে তবে এখানে সরবরাহিত উত্তরটি দেখুন ।


1
তুমি কি নিশ্চিত? আমি চেষ্টা করেছি কিন্তু এটি উভয়ই উন্মুক্ত এবং বন্ধ হয়ে গেছে। আমি অ্যাকশনবারেরলক ফ্রেমওয়ার্কের সাথে অ্যান্ড্রয়েড ২.৩x এ পরীক্ষা করছিলাম।
থানহ্নি

94
স্পষ্ট করার জন্য: ড্রয়ারলআউট.লোক_মোডক্লক_এইপিপেন ড্রয়ারটি খোলা অবস্থায় তালাবদ্ধ করে রাখে যাতে ব্যবহারকারী এটি আড়াল করতে না পারে। ড্রয়ারলাউট.লোক_মোডক্লক_সিএলএসএসএসএসটি ড্রয়ারটি বন্ধ অবস্থায় বন্ধ করে দেয় যাতে ব্যবহারকারী এটি খুলতে না পারে। শেষ অবধি, ড্রয়ারলআউট.লোক_মোডক্লিনকড ড্রয়ারটি আনলক করে যাতে এটি খোলা বা বন্ধ হয়ে যায়।
egfconnor

4
আপনার যদি ইতিমধ্যে না থাকে mDrawerLayoutতবে নীচের মত সেট করুন:mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
স্টিভ লিডল

4
তবে কীভাবে আমরা কেবল অ্যাপ্লিকেশন আইকনটি দিয়ে ওপেন / ক্লোজ করতে এবং সোয়াইপিং করতে চাই না? এটা করার কোন উপায় আছে? আমি কৌতূহলী কারণ আমি নতুন ToolBar(এপিআই 21) বাস্তবায়নের চেষ্টা করছি এবং SlidingTabLayoutএটির বৈশিষ্ট্যটি ব্যবহার করতে চাই যা আমার নেভের সাথে বিরোধী। ড্রয়ার সোয়াইপিং সুতরাং আমি বরং নাভকে অক্ষম করতাম। ToolBarস্লাইডিং বৈশিষ্ট্যের পক্ষে ড্রয়ার স্লাইড ।
আজুরস্পট

2
এটি পুরো ড্রয়ারটি অক্ষম করে (উদাহরণস্বরূপ আইকনটি আর কাজ করে না), কেবল সোয়াইপিং নয়, তাই প্রশ্নের উত্তর দেয়নি - যা বিশেষভাবে
সোয়াইপিংয়ের

101

লক করার জন্য আপনি এটি করতে পারেন:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

এবং আনলক করার জন্য:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);

LOCK_MODE_UNLOCKED পতাকা দিয়ে গৃহীত উত্তর সে বিষয়ে পরিষ্কারভাবে বর্ণনা করার জন্য ধন্যবাদ
Mattia Ruggiero

1
আমি মনে করি এটি গৃহীত উত্তরের চেয়ে ভাল কারণ এটি বিপরীত পদ্ধতিটিও প্রবর্তন করে
TheWhiteLlama

যদি আমি mDrawerLayout.setDrawerLockMode (ড্রয়ারলআউট.লোক_মোড। লকED_CLOSED) ব্যবহার করি; লক করার জন্য এটি ড্রয়ারটি বন্ধ করে দিয়েছে তাই, লকিংয়ের জন্য আমি mDrawerLayout.setDrawerLockMode (ড্রয়ারলয়েআউট.লোক_মোডক্লোক_এইপিএন) ব্যবহার করেছি;
এসএইচ মেহেদী

15

সেটড্রাওয়ারলকমোড () ব্যবহার করার সময় মহাকর্ষের মানও যুক্ত করুন ;

এটা কর :

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

এটি একটি কবজ মত কাজ করা উচিত


2
mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED); উভয় ড্রয়ার এবং ড্রয়ারলআউট.সেটড্রওয়ারলকমোড (ড্রয়ারলয়েআউট.লোক_মোডক্লোক_ক্লোকড, গ্র্যাভিটিকম্প্যাট.এন্ড) লক করুন; আপনি কোন ড্রয়ারকে লক করতে চান তা উপস্থাপন করুন ধন্যবাদ ম্যান এটি আমার জন্য কাজ করে এবং আমার সময় বাঁচায়।
সঞ্জীব সংগ্রাম

বর্তমান উত্সগুলিতে, দেখে মনে হচ্ছে বাম দিকে 3 এবং ডানদিকের জন্য 5 প্রত্যাশার মতো কাজ করবে, তবে গ্র্যাভিটিকম্প্যাট। এন্ড এটি করে না।
প্রকল্পজর্নিম্যান

6

সোয়াইপিং অক্ষম করতে, ওভাররাইড করুন onInterceptTouchEventএবং onTouchEventচালিয়ে যান DrawerLayoutএবং এগুলিকে মিথ্যা ফিরিয়ে দিন।


এটা সঠিক উত্তর. উত্তরে আমাকে আরও কিছুটা বিস্তারিত বলি।
মার্টিন ভিসনি

4

সোয়াইপিং অক্ষম করার উত্তরটি সঠিক। আমার মনে হয় LOCK_MODE_LOCKED_CLOSED ২৪.x কম্পাটে কাজ করেছে, তবে কার্যকারিতাটি নতুন কমপ্যাট লাইব্রেরিতে পরিবর্তন করা হয়েছে এবং LOCK_MODE_LOCKED_CLOSED এখন পুরোপুরি হ্যামবার্গার মেনু ব্যবহার করে নাভি মেনু প্রদর্শন করা থেকে বাধা দেয়।

নিম্নলিখিত ক্লাসটি আমার জন্য কাজ করে (কোটলিন):

class MyDrawerLayout(ctx: Context) : DrawerLayout(ctx) {
  var isSwipeOpenEnabled: Boolean = true

  override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
      if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
          return false
      }
      return super.onInterceptTouchEvent(ev)
  }

  @SuppressLint("ClickableViewAccessibility")
  override fun onTouchEvent(ev: MotionEvent): Boolean {
      if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
          return false
      }
      return super.onTouchEvent(ev)
  }
}

0

এটি আমার পক্ষে কাজ করে

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.