পদ্ধতি সেটড্রেয়ারলিস্টনার হ্রাস করা হয়


226

আমি আমার অ্যাপ্লিকেশনটিতে কিছু করার সময় আমি দেখতে পাচ্ছি যে আমার অ্যাপ্লিকেশনটিতে নেভিগেশন ড্রয়ারটি এর আকার হ্রাস করেছে। তবে আমি তাতে কিছু করছি না।

নেভিগেশন ড্রয়ার

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

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
অবহেলিত কোডটির সম্ভবত ড্রয়ারের আকারের সাথে কোনও সম্পর্ক নেই। এর অর্থ হ'ল তারা ভবিষ্যতে এর জন্য সমর্থন সরিয়ে ফেলবে (নির্দিষ্ট পদ্ধতি)। এটি সম্ভবত একটি অ্যাডড্রেয়ারলিস্টনার দিয়ে প্রতিস্থাপন করা হয়েছে তবে আমি এটি সম্পর্কে নিশ্চিত নই।
chRyNaN

আমি দেখছি .. তবে আমি কোনও সমস্যা দেখতে পাচ্ছি না, আমি কেবল একটি নতুন টুকরো তৈরি করেছি যা সেই ড্রয়ারের সাথে সংযুক্ত নেই .. সত্যিই বুঝতে পারছি না কেন সেই জিনিসটি ঘটেছে ...
ডেভিড গ্লোরিওসো

আপনি গ্রন্থাগারের কোন সংস্করণ ব্যবহার করছেন?
অমিত ওয়াঘেলা

আমি এটি << কমপ্লেড 'com.android.support:appcompat-v7:23.2.0', 'com.android.support:design:23.2.0' সংকলন, 'com.android.support:support-v4' সংকলন করছি : 23.2.0 '
ডেভিড গ্লোরিও

উত্তর:


751

addDrawerListener()পরিবর্তে ব্যবহার করুন।


13
কেন। কেবল, কেন।
2'17 এ 22

9
তারা কেন এই
ছদ্মবেশটি করে

7
এপিআই ধারাবাহিকতার জন্য। তারা যোগ করেছে removeDrawerListener()তাই add...ম্যাচের নামকরণ করা হয়েছে
মার্সিন ওরোলোস্কি

26
কমপক্ষে তারা use 'addDrawerListener' insteadঅবহিত বার্তায় অন্তর্ভুক্ত থাকতে পারে !
এএএ

1
সুতরাং ... আমরা একাধিক ড্রয়ার শ্রোতাদের যুক্ত করতে পারি?
কেনি ওয়ার্ডেন

84

প্রতিস্থাপন করুন:

drawer.setDrawerListener(...);

সঙ্গে

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) শোনার ইভেন্টগুলিতে অবহিত হওয়ার জন্য শ্রোতাকে সেট করে।

নোট করুন যে এই পদ্ধতিটি অবহেলা করা হয়েছে এবং আপনার addDrawerListener(DrawerLayout.DrawerListener)শ্রোতা যুক্ত করতে এবং removeDrawerListener(DrawerLayout.DrawerListener)নিবন্ধিত শ্রোতাকে অপসারণ করতে ব্যবহার করা উচিত ।


18
আমাদের কোথায় ড্রয়ার শ্রোতার অপসারণ করা উচিত এবং এটি কি প্রয়োজনীয়?
পোর্টফোলিওবিল্ডার

@portfoliobuilder এটি নির্ভর করে। সাধারণত, এটি প্রয়োজন হয় না। আপনি যদি এটি সেট করেন onCreate()এবং আপনি স্ক্রিনটি ঘোরান তবে পুরো ক্রিয়াকলাপটি পুনরায় তৈরি করা হয় এবং নতুন শ্রোতা সেট করা থাকে। আরও জটিল কেসগুলি এই চিন্তার সাথে পরিচালনা করা উচিত যে (সম্ভবত) 1 টির বেশি শ্রোতা সেট করার দরকার নেই DrawerLayout
জনি পাঁচ

29

প্রতিস্থাপন করা setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

সঙ্গে addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

উদাহরণ

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

22

আমার ধারণা আমি আমার প্রশ্নের উত্তর দেব। সর্বশেষ navigationViewতার ডিফল্ট উত্পাদন করে android:layout_heightপ্রায় এ 18dpআপনি চয়ন করলে "wrap_content"। সুতরাং, আপনার অবশ্যই android:layout_heightনিজের navigationViewবা সাধারণভাবে যা চান তা চয়ন করতে হবে android:layout_height="match_parent"

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

যাইহোক, আপনি নেভিগেশন ড্রয়ারে কোনও আইটেম যুক্ত করলে এর উচ্চতা স্বয়ংক্রিয়ভাবে বৃদ্ধি পায়।

শেষ অবধি, লাক্সি লিউ যেমন বলেছিলেন addDrawerListener()তার পরিবর্তে ব্যবহার করুন setDrawerListener()


6
কারণ এটি আমার মূল প্রশ্ন নয়। আপনি দেখতে পাচ্ছেন না? দয়া করে আমার সমস্যাটি আগে পড়ুন ... এটি কেবল
অবহেলিত

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