আপনার অ্যাপে সার্চ কার্যকারিতা প্রদান করতে আমরা অ্যাপ বারে একটি আইটেম হিসাবে SearchView
উইজেট ব্যবহার করার পরামর্শ দিই। অ্যাপ বারে সমস্ত আইটেমের মতো, আপনি SearchView
সর্বদা দেখানোর জন্য সংজ্ঞায়িত করতে পারেন বা শুধুমাত্র যখন জায়গা থাকে। আপনি এটিকে একটি সংকোচনযোগ্য ক্রিয়া হিসাবেও সংজ্ঞায়িত করতে পারেন, যা প্রথমে একটি আইকন হিসাবে SearchView
প্রদর্শন করে এবং তারপর ব্যবহারকারী আইকনটি আলতো চাপলে সমগ্র অ্যাপ বারটিকে একটি অনুসন্ধান ক্ষেত্র হিসাবে গ্রহণ করে।
অ্যাপ বারে SearchView যোগ করুন
অ্যাপ বারে একটি SearchView
উইজেট যোগ করতে, আপনার প্রজেক্টে res/menu/options_menu.xml
নামে একটি ফাইল তৈরি করুন এবং ফাইলটিতে নিম্নলিখিত কোডটি যোগ করুন। এই কোডটি সংজ্ঞায়িত করে কিভাবে সার্চ আইটেম তৈরি করতে হয়, যেমন ব্যবহার করার আইকন এবং আইটেমের শিরোনাম। collapseActionView
অ্যাট্রিবিউট আপনার SearchView
পুরো অ্যাপ বারটি নিতে এবং ব্যবহার না করার সময় একটি সাধারণ অ্যাপ বার আইটেমে ফিরে আসতে দেয়। হ্যান্ডসেট ডিভাইসে সীমিত অ্যাপ বার স্থানের কারণে, আমরা একটি ভাল ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য collapsibleActionView
বৈশিষ্ট্য ব্যবহার করার পরামর্শ দিই।
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/search" android:title="@string/search_title" android:icon="@drawable/ic_search" android:showAsAction="collapseActionView|ifRoom" android:actionViewClass="androidx.appcompat.widget.SearchView" /> </menu>
আপনি যদি আরও অ্যাক্সেসযোগ্য অনুসন্ধান আইকন চান তবে /res/drawable
ফোল্ডারে একটি ic_search.xml
ফাইল তৈরি করুন এবং এতে নিম্নলিখিত কোডটি অন্তর্ভুক্ত করুন:
<vector android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/> </vector>
অ্যাপ বারে SearchView
প্রদর্শন করতে, আপনার কার্যকলাপের onCreateOptionsMenu()
পদ্ধতিতে XML মেনু রিসোর্স res/menu/options_menu.xml
স্ফীত করুন:
কোটলিন
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.options_menu, menu) return true }
অ্যাপটি চালানো এইরকম কিছু তৈরি করে:
SearchView
আপনার অ্যাপের অ্যাপ বারে প্রদর্শিত হবে, কিন্তু এটি কার্যকরী নয়। আপনি যদি অনুসন্ধান আইকনে আলতো চাপেন, আপনি এইরকম কিছু পাবেন:
SearchView
কার্যকরী করতে, আপনাকে অবশ্যই সংজ্ঞায়িত করতে হবে যে SearchView
কীভাবে আচরণ করে।
একটি অনুসন্ধান কনফিগারেশন তৈরি করুন
একটি অনুসন্ধান কনফিগারেশন নির্দিষ্ট করে কিভাবে SearchView
আচরণ করে এবং একটি res/xml/searchable.xml
ফাইলে সংজ্ঞায়িত করা হয়। একটি সার্চ কনফিগারেশনে ন্যূনতম একটি android:label
অ্যাট্রিবিউট থাকতে হবে যার মান আপনার Android ম্যানিফেস্টের <application> বা <activity> উপাদানের android:label
অ্যাট্রিবিউটের সমান। যাইহোক, আমরা ব্যবহারকারীকে অনুসন্ধান বাক্সে কী প্রবেশ করতে হবে সে সম্পর্কে ধারণা দিতে একটি android:hint
বৈশিষ্ট্য যোগ করার পরামর্শ দিই৷
<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_name" android:hint="@string/search_hint" />
আপনার অ্যাপের ম্যানিফেস্ট ফাইলে, একটি <meta-data>
উপাদান ঘোষণা করুন যা res/xml/searchable.xml
ফাইলের দিকে নির্দেশ করে। একটি <activity>
এ উপাদানটি ঘোষণা করুন যেখানে আপনি SearchView
প্রদর্শন করতে চান।
<activity android:name=".SearchResultsActivity" android:exported="false" android:label="@string/title_activity_search_results" android:launchMode="singleTop" android:theme="@style/Theme.AppCompat.Light"> <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity>
আপনার তৈরি করা onCreateOptionsMenu()
পদ্ধতিতে, setSearchableInfo(SearchableInfo)
কল করে অনুসন্ধান কনফিগারেশনটিকে SearchView
এর সাথে যুক্ত করুন :
কোটলিন
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.options_menu, menu) val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager val searchView = menu.findItem(R.id.search).actionView as SearchView val component = ComponentName(this, SearchResultsActivity::class.java) val searchableInfo = searchManager.getSearchableInfo(component) searchView.setSearchableInfo(searchableInfo) return true }
getSearchableInfo()
এর কল একটি SearchableInfo
অবজেক্ট পায় যা অনুসন্ধান কনফিগারেশন XML ফাইল থেকে তৈরি করা হয়। যখন সার্চ কনফিগারেশন সঠিকভাবে আপনার SearchView
এর সাথে যুক্ত থাকে এবং ব্যবহারকারী একটি ক্যোয়ারী জমা দেয়, তখন SearchView
ACTION_SEARCH
উদ্দেশ্যের সাথে একটি কার্যকলাপ শুরু করে। তারপরে আপনার এমন একটি কার্যকলাপের প্রয়োজন যা এই উদ্দেশ্যটির জন্য ফিল্টার করতে পারে এবং অনুসন্ধান ক্যোয়ারী পরিচালনা করতে পারে।
একটি অনুসন্ধানযোগ্য কার্যকলাপ তৈরি করুন
একটি অনুসন্ধানযোগ্য কার্যকলাপ ACTION_SEARCH
অভিপ্রায়ের জন্য ফিল্টার করে এবং একটি ডেটা সেটে অনুসন্ধানের জন্য অনুসন্ধান করে৷ একটি অনুসন্ধানযোগ্য কার্যকলাপ তৈরি করতে, ACTION_SEARCH
অভিপ্রায়ের জন্য ফিল্টার করার জন্য আপনার পছন্দের একটি কার্যকলাপ ঘোষণা করুন:
<activity android:name=".SearchResultsActivity" ... > ... <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> ... </activity>
আপনার অনুসন্ধানযোগ্য কার্যকলাপে, আপনার onCreate()
পদ্ধতিতে এটি পরীক্ষা করে ACTION_SEARCH
উদ্দেশ্যটি পরিচালনা করুন৷
কোটলিন
class SearchResultsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_search_results) handleIntent(intent) } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) handleIntent(intent) } private fun handleIntent(intent: Intent) { if (Intent.ACTION_SEARCH == intent.action) { val query = intent.getStringExtra(SearchManager.QUERY) Log.d("SEARCH", "Search query was: $query") } } }
এখন, SearchView
ব্যবহারকারীর প্রশ্ন গ্রহণ করতে পারে এবং ACTION_SEARCH
অভিপ্রায়ে আপনার অনুসন্ধানযোগ্য কার্যকলাপ শুরু করতে পারে।
আপনি অনুসন্ধান ক্যোয়ারী প্রাপ্ত করার পরে, আপনি এটি ViewModel
এ পাস করতে পারেন, যেখানে আপনি প্রদর্শনের জন্য অনুসন্ধান ফলাফল পুনরুদ্ধার করতে আপনার আর্কিটেকচারের অন্যান্য স্তরগুলিতে এটি ব্যবহার করতে পারেন৷