আমি কীভাবে প্রোগ্রামটি সার্চভিউ খুলব?


102

অ্যাকশনবারের জন্য এই উইজেটটি রয়েছে যার নাম 'অনুসন্ধান ভিউ'। যখন এটি ব্যবহার না করা হয়, তখন এটি দেখতে এমন দেখাচ্ছে:

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

এবং যখন এটি ব্যবহৃত হয়, তখন এটির মতো দেখতে:

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

আমি চাই (অবশ্যই প্রোগ্রামক্রমে) অনুসন্ধান ভিউ খুলতে (এটি "ব্যবহারে" তৈরি করুন)।

আমি বেশ কয়েকটি ফাংশন চেষ্টা করেছি যেমন:

SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setOnQueryTextListener(this);

    searchView.performClick();
    searchView.requestFocus();

তবে তাদের কেউই কাজ করেননি ...

এক্সএমএলে অনুসন্ধান ভিউ:

<item android:id="@+id/menu_search"
      android:title="Search"
      android:icon="@drawable/ic_action_search"
      android:showAsAction="ifRoom|collapseActionView"
      android:actionViewClass="android.widget.SearchView" />

উত্তর:


255

এর SearchViewসাথে প্রসারিত করুন

searchView.setIconified(false);

এবং এটি দিয়ে ধসে

searchView.setIconified(true);

আপনি মান পরিবর্তন করতে হবে android:showAsActionথেকে ifRoom|collapseActionViewথেকে always। SearchViewএর অ্যাট্রিবিউট android:iconifiedByDefaultহওয়া উচিত true, যা ডিফল্ট মান, অন্যথায় ব্যবহারকারী ভেঙ্গে না পারেন, SearchViewপরে এটি প্রোগ্রামের মাধ্যমে খোঁজা হয়েছে।


15
হ্যালো, একটি কীবোর্ড পপ-আপ হয়েছে তবে অনুসন্ধান ভিভ খুলবে না।
— এলি রেভাঃ

1
হ্যালো, এটিও কার্যকর হয়নি। আমি এক্সএমএল উত্স কোড সহ পোস্টটি আপডেট করেছি।
— এলি রেভাঃ

7
মানুষ আপনি আমার এফ * কিং নায়ক
— এলিজিও ওকাম্পোস

1
showAsAction = "সর্বদা" একটি ঘৃণ্য পূর্ণস্ক্রিন অনুসন্ধান বার প্রদর্শন করবে যদিও, ঘূর্ণনের পরে
— ফ্রান্সেস্কো গ্যাব্রিলি

1
showAsAction="always"প্রসারিত হওয়ার সময় অনুসন্ধান আইকনটি অ্যাকশন বারে থেকে যায়, যা ম্যানুয়ালি অনুসন্ধানকে ফোকাস করার সময় উপস্থিতির সাথে সাদৃশ্যপূর্ণ না।
— আইএক্সএক্স

74

কল করার চেষ্টা করুন expandActionView()অ্যাকশনভিউতে অ্যাকশনভিউএক্সপেন্ডেড () নয়, মেনুআইটিমে করার ।

এটা আমার জন্য কাজ করে.

MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchMenuItem.expandActionView();

10
নিখুঁত কাজ করে তবে কেবল এপিআই> 14 এর জন্য earlier
— আন্দ্রেই আওলাস্কা

এটি সঠিক সমাধান - নির্বাচিত একটি আপনাকে সেট করতে বাধ্য করে showAsAction: alwaysযা কিছু সমস্যা সৃষ্টি করে।
— আইএক্সএক্স

13

আপনি যখন প্রয়োজন কেবল সমর্থন লাইব্রেরি ব্যবহার করতে চান, এটি করুন

    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    if (Utils.hasIceCreamSandwich())
        searchMenuItem.expandActionView();
    else MenuItemCompat.expandActionView(searchMenuItem);

অন্যথায় কেবল এটি করুন

    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    MenuItemCompat.expandActionView(searchMenuItem);

6

আমি জানি এই দেরী কিন্তু

এটি খোলার জন্য এক্সপেনডএকশনভিউ () এ কল করার চেষ্টা করুন এবং এটি বন্ধ করতে অ্যাকশনভিউ () সংযোগ করুন। অনুসন্ধান ভিউটিকে ফোকাস দেওয়ার জন্য আপনি getActionView () এর মাধ্যমে প্রকৃত অ্যাকশন ভিউতে অনুরোধফোকাস () কে কল করতে পারেন :)


1

ম্যাথিয়াস রবার্টসের উত্তর প্রসারিত করা:

আমি এটির অনুসন্ধান মান রাখতে এবং অন্য খণ্ড থেকে ব্যবহারকারী ফিরে আসার পরে সেট করার জন্য একটি তালিকা খণ্ড চাইছিলাম।

if (myViewModel.filterTextSaved.isNotEmpty()) { // Kotlin, storing state in ViewModel
    searchItem.expandActionView() // needs to come first, otherwise empty text
    theTextArea.setText(courseViewModel.filterTextOnClick)
}

এবং আমি যে মেনু রাখি তার জন্য always|collapseActionView, অন্যথায় এটি খোলা থাকে যখন ব্যবহারকারী পাঠ্য মুছে ফেলেন।


0

শেষ searchViewরক্ষণাবেক্ষণ খোলার জন্য এটি close_buttonব্যবহার করুন onCreate: -

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