Tôi thiết lập SearchWidget như được mô tả trong Android API Guide. Nó hiển thị đúng biểu tượng kính lúp trong Thanh tác vụ và nếu tôi nhấp vào nó, nó sẽ khởi chạy tiện ích tìm kiếm trong Thanh tác vụ (trường nhập với nền tối).Hiển thị SearchWidget trong ActionBar nếu người dùng nhấn nút tìm kiếm của thiết bị
Tuy nhiên, nếu tôi nhấn nút tìm kiếm của thiết bị ảo, khi đó một trường tìm kiếm khác được khởi chạy: Nó có nền trắng và không gọi phương thức gọi lại mà tôi đã chỉ định.
Vì vậy, tôi đã thêm này để lớp MainActivity tôi:
public boolean onSearchRequested() {
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setIconified(!searchView.isIconified());
return false;
}
Các thiết lập của widget tìm kiếm là chính xác giống như nó được mô tả trong các tài liệu:
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextListener(new CustomSearchQueryTextListener());
searchable.xml My :
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name">
</searchable>
Và AndroidManifest.xml:
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:uiOptions="splitActionBarWhenNarrow" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
</activity>
Lý do tại sao tôi đã thử setIconfied() phương pháp là trong API Android Hướng dẫn nó nói dưới "Khả năng chuyển đổi khả năng hiển thị hộp tìm kiếm":
"Theo mặc định, widget tìm kiếm được "biểu tượng hóa", nghĩa là nó là chỉ được biểu thị bằng biểu tượng tìm kiếm (kính lúp) và mở rộng thành hiển thị hộp tìm kiếm khi người dùng chạm vào nó. Như được hiển thị ở trên, bạn có thể hiển thị hộp tìm kiếm theo mặc định, bằng cách gọi setIconifiedByDefault (sai). Bạn cũng có thể chuyển đổi việc tìm kiếm phụ tùng xuất hiện bằng cách gọi setIconified() "
Tôi cũng đã cố gắng gọi startSearch("", false, null, false);
nhưng điều này sẽ trả về lĩnh vực tìm kiếm cùng với nền trắng
Vì vậy, câu hỏi của tôi là..: Có thể khởi chạy tiện ích tìm kiếm trong thanh tác vụ nếu người dùng nhấn nút tìm kiếm của thiết bị, tức là biểu mẫu chính xác giống như hành động của mục menu tìm kiếm được nhấp không?