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


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থেকে alwaysSearchViewএর অ্যাট্রিবিউট 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.