我正在實施Action Bar
。我想在Flipkart應用程序的搜索字段區域Action Bar SearchView
中有2個按鈕。SearchBar中的ActionBar Mic Button(語音搜索)
像上面的截圖,我要2個按鈕,第一個是語音搜索,另一個是對條碼掃描儀,當搜索圖標點擊和Actionbar
出現的SearchView
。我可以通過搜索圖標實現actionbar serahcview
。但我有點困惑爲什麼語音搜索沒有出現在我的應用程序。看看我的源代碼。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
setSearchTextColour(searchView);
setCloseSearchIcon(searchView);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_search:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void setSearchTextColour(SearchView searchView) {
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchPlate = (EditText) searchView.findViewById(searchPlateId);
searchPlate.setTextColor(getResources().getColor(R.color.novoda_blue));
// searchPlate.setBackgroundResource(R.drawable.edit_text_holo_light);
searchPlate.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
}
private void setCloseSearchIcon(SearchView searchView) {
try {
Field searchField = SearchView.class.getDeclaredField("mCloseButton");
searchField.setAccessible(true);
ImageView closeBtn = (ImageView) searchField.get(searchView);
closeBtn.setImageResource(R.drawable.action_cancel);
searchField = SearchView.class.getDeclaredField("mVoiceButton");
searchField.setAccessible(true);
ImageView voiceBtn = (ImageView) searchField.get(searchView);
voiceBtn.setImageResource(R.drawable.ic_launcher);
} catch (NoSuchFieldException e) {
Log.e("SearchView", e.getMessage(), e);
} catch (IllegalAccessException e) {
Log.e("SearchView", e.getMessage(), e);
}
}
截圖的,我從上面的代碼中得到了什麼:
任何幫助將高度讚賞。
我想在當前活動的效果,不想打開新的意圖。有沒有可能性? –
爲什麼不呢?您可以使用捆綁包保存活動狀態。 「 – moonsweel
」在這些更改之後,您將在搜索視圖中看到一個麥克風按鈕。「只有設備支持它。 – aycanadal