int*_*_32 20 android android-softkeyboard android-4.0-ice-cream-sandwich searchview android-4.2-jelly-bean
SearchView默认是聚焦的,但是当我尝试显示软件键盘时 - 它不会发生:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
Run Code Online (Sandbox Code Playgroud)
但是,当我点击SearchView时 - 它确实如此.为什么?
int*_*_32 30
固定!
mSearchView.setOnQueryTextFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (hasFocus) {
showInputMethod(view.findFocus());
}
}
});
Run Code Online (Sandbox Code Playgroud)
和
private void showInputMethod(View view) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(view, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
Md *_*ury 11
如果您使用的是SearchView:
<android.support.v7.widget.SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:iconifiedByDefault="true"
app:showAsAction="always"
app:iconifiedByDefault="true"/>
Run Code Online (Sandbox Code Playgroud)
然后只需将其添加到您的onCreate方法中:
final SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
searchView.setFocusable(true);
searchView.setIconified(false);
searchView.requestFocusFromTouch();
Run Code Online (Sandbox Code Playgroud)
这个对我有用。
小智 9
我遇到了一个仍然无法打开键盘的SearchView问题,并且可以通过添加200毫秒的延迟来实现:
mSearchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(final View view, boolean hasFocus) {
if (hasFocus) {
view.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view.findFocus(), 0);
}
}, 200);
}
}
});
Run Code Online (Sandbox Code Playgroud)
怎么用setOnFocusChangeListener?
searchview.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
}
});
Run Code Online (Sandbox Code Playgroud)
最好和最简单的方法:
android:focusable="true"
app:iconifiedByDefault="false"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
将以上三行添加到 SearchView 下的 xml 中,看看神奇的......!
| 归档时间: |
|
| 查看次数: |
17100 次 |
| 最近记录: |