我想一个很简单的用户界面,有一个EditText
和ImageView
。当我点击EditText时,我想接受来自用户的输入。现在,当我点击ImageView(键盘仍然打开时)时,我想禁用EditText并同时阻止软键盘关闭。但是setEnabled(false)会自动关闭软键盘。Android的 - 防止Softkeyboard从EditText上后,关闭已被禁用
这里是我的胡亚蓉:
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
final EditText editText = (EditText) findViewById(R.id.edit_text);
final ImageView imageView = (ImageView) findViewById(R.id.image_view);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setEnabled(false);
}
});
}
}
这里是UI:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.pearson.android.test.stackoverflow_efficient_data_construction_recyclerview.SecondActivity"
tools:showIn="@layout/activity_second">
<EditText
android:id="@+id/edit_text"
android:layout_width="300dp"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/image_view"
android:layout_alignParentRight="true"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@android:color/holo_red_dark"/>
</RelativeLayout>
我试图保持softkeyboard打开,像这样:
InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
,但有一个很明显的闪烁(好像旧的键盘关闭并被新的键盘取代)。
我也试过没有禁用的EditText(我不应该能够输入点击图片后的任何文本),并试图操纵focasability代替,但没有成功。
任何方向或解决方案将不胜感激。
你为什么要保留的软键盘打开,即使用户不应该能够输入到它?这是糟糕的设计,用户不知道发生了什么。 –