tôi đã sử dụng ActionBarSherlock để tạo ActionBar nó có một nút tìm kiếm hiển thị một AutoCompleteEditText
(SHOW_AS_COLLAPSIBLE_ACTION_VIEW
) Khi nút Search được nhấp, EditText
được hiển thị, tôi muốn EditText
để có được sự tập trung và do đó hiển thị bàn phím mềm, khi nó được mở rộng này là mãCách lấy nét và hiển thị bàn phím mềm khi EditText được hiển thị trên thanh hành động?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
boolean isLight = true;
// Add Search button
int menuItemId = menu
.add("Search")
.setIcon(
isLight ? R.drawable.ic_search_inverse
: R.drawable.ic_search)
.setActionView(R.layout.collapsible_edittext)
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)
.getItemId();
// Add Search Topic (Sub Menu)
SubMenu subMenu1 = menu.addSubMenu("Topic");
subMenu1.add(Menu.NONE, 10, 0, "All Topics");
subMenu1.add(Menu.NONE, 11, 1, "Adult");
subMenu1.add(Menu.NONE, 12, 2, "Pediatric");
subMenu1.add(Menu.NONE, 13, 13, "Drug");
MenuItem subMenu1Item = subMenu1.getItem();
subMenu1Item.setIcon(R.drawable.abs__ic_menu_moreoverflow_holo_light);
subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
searchBar = (AutoCompleteTextView) menu.findItem(menuItemId)
.getActionView().findViewById(R.id.etSearch);
setSearchSettings(searchMenuID);
// get instance of Search Button
searchWidgetItem = menu.findItem(menuItemId);
searchBar
.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
// Perform a Search
performSearch(v.getText().toString(),
(searchMenuID < 0) ? 3 : searchMenuID);
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
// Collapse the ActionView (Search Bar)
searchWidgetItem.collapseActionView();
// Clear the TextEdit
v.setText("");
return true;
}
return false;
}
});
return true;
}
tôi đã cố gắng để thiết lập một OnFocusChangeListener
trên EditText và hiển thị mềm Keboard nếu nó có tập trung, nhưng nó didnt làm việc:
searchBar.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);
}
}
});
Làm thế nào để làm điều này?
tại sao bạn cần phải đăng một Runnable ? –