我的布局包含ListView
,SurfaceView
和EditText
.当我点击EditText
它时,它会获得焦点并弹出屏幕键盘.当我点击EditText
它之外的某个地方时,它仍然有焦点(它不应该).我想我可以OnTouchListener
在布局中设置其他视图并手动清除EditText
焦点.但似乎过于hackish ......
我在其他布局中也有相同的情况 - 列表视图中包含不同类型的项目,其中一些项目EditText
位于内部.他们的行为就像我上面写的那样.
EditText
当用户触摸外面的东西时,任务就是失去焦点.
我在这里看到过类似的问题,但没有找到任何解决方案......
我只想在"edittext"外单击时自动失去焦点并隐藏键盘.目前,如果我点击"edittext"它会聚焦,但我需要点击后退按钮来取消聚焦.
现在,当用户触摸键盘外时,我尝试隐藏软键盘:
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(editView.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
Run Code Online (Sandbox Code Playgroud)
我想把逻辑放在我的基础活动类中,所以如果没有View可以getWindowToken吗?
任何人都可以帮我编写一个方法来获取视图中的所有EditTexts吗?我想实现htafoya在这里发布的解决方案: 如何在EditText外单击后隐藏软键盘?
不幸的是,getFields()
方法丢失了,htafoya没有回答我们分享他的getFields()
方法的请求.
我有一个EditText
电话myTextview
.我希望软键盘在我点击时显示,EditText
但如果我点击外面则解雇EditText
.所以我使用下面的方法.但是当我在视图外面点击时键盘不会被忽略(我点击了一下TextView
).我该如何修复此代码?
myTextview.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
} else {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myTextview.getWindowToken(), 0);
}
}
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试关闭在另一个应用程序中打开的软键盘.我从这里尝试了所有解决方案:以 编程方式隐藏/显示Android软键盘或此处:关闭/隐藏Android软键盘
正如你在图片中看到我必须关闭从另一个应用程序打开的键盘,添加到清单,不要让键盘可见不起作用.
要注意这是一个更衣室应用程序,我会在手机进入睡眠模式时启动一项活动.
我错过了什么吗?从商店测试其他更衣室应用程序并没有遇到此问题
但结果如下:
编辑:更多信息
这是我启动储物柜的方式:
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
//Toast.makeText(context, "" + "screeen off", Toast.LENGTH_SHORT).show();
wasScreenOn = false;
Intent intent = new Intent(context, LockScreenActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
// do whatever you need to do here
//wasScreenOn = false;
}
Run Code Online (Sandbox Code Playgroud)
这是清单代码:
<activity
android:name=".ui.activities.LockScreenActivity"
android:excludeFromRecents="true"
android:noHistory="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
Run Code Online (Sandbox Code Playgroud) 我的活动中有两个EditText
字段,一个完成button
.EditText
当用户按下按钮时,我希望两个字段都松散焦点(即光标不应该显示在它们中的任何一个上).我使用以下代码:
final Button saveButton = (Button) findViewById(R.id.saveButton);
saveButton.setOnClickListener(saveButtonListener);
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
Text1.clearFocus();
Text2.clearFocus();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我按下完成按钮时,Text1
即使我还没有点击任何按钮,光标也会亮起EditText
.如何使EditText字段松散地关注按钮的单击
我知道在android中解雇键盘的代码是
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
如果我们触摸文本区域之外的区域而不是屏幕中的键盘,任何人都可以建议我隐藏键盘的方法.
eclipse android android-keypad ontouchlistener android-edittext
在我的应用程序中,我正在创建一个搜索界面,SearchView
当它失去并分别获得焦点时折叠和扩展.然而,失败的焦点只发生在两种情况:
按下后退按钮时.
SearchView
按下旁边的主页图标时.
如果用户不仅点击这两件事,而且点击屏幕上的任何其他东西(例如,任何按钮或屏幕的任何空白部分而没有视图),我希望它失去焦点(并因此崩溃).
我在Android上新的请帮我自动隐藏滚动列表视图这里是我的代码但无法得到正确的解决方案
xml文件:
<ListView
android:id="@+id/offline_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#dde1e3"
android:clickable="true"
android:focusable="true"
>
</ListView>
Run Code Online (Sandbox Code Playgroud)
码:
lvCustomList.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(!hasFocus)
hideKeyboard(v);
}
private void hideKeyboard(View view) {
// TODO Auto-generated method stub
InputMethodManager inputMethodManger = (InputMethodManager)getSystemService(Activity
.INPUT_METHOD_SERVICE);
inputMethodManger.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
});
Run Code Online (Sandbox Code Playgroud)