Ich implementiere Action Bar
. Ich möchte 2 Buttons im Suchfeld von Action Bar SearchView
wie Flipkart App.ActionBar Mic-Taste (Sprachsuche) in SearchView
Wie oben Screenshot, I 2 Tasten wollen, erste ist für Voice Search und die andere ist für Barcode-Scanner, wenn Suchsymbol und SearchView
von Actionbar
erscheint angeklickt. Ich bin in der Lage, actionbar serahcview
mit Suchsymbol zu implementieren. Aber ich bin etwas verwirrt, warum die Sprachsuche nicht in meiner App erscheint. Schauen Sie sich meinen Quellcode an.
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);
}
}
Screenshot Was ich von oben Code bekam:
Jede mögliche Hilfe würde sehr geschätzt werden.
ich auf aktuelle Aktivität bewirken wollen, Dont New Intent öffnen möchten. Gibt es eine Möglichkeit? –
Warum nicht? Sie können einen Aktivitätsstatus mithilfe von Bundles speichern. – moonsweel
"Nach diesen Änderungen sehen Sie in einer Suchansicht eine Mikrofontaste." Nur wenn das Gerät dies unterstützt. – aycanadal