我找到了可以执行以下操作的解决方案
当你按下edittext键盘时会显示然后当你按下微调器时它会消失
然后当你在微调器上选择项目时,即使相同的项目再次出现键盘
最后的问题是,如果我按下微调器(所以键盘消失)然后我按下屏幕上的任意位置(我希望键盘重新出现)这很容易,只需在每次你让键盘出现时将全局布尔值设置为 true,反之亦然反之亦然,并为活动中的所有视图制作 onClickListener,当然微调器除外,并且 onClickListener 具有以下代码
boolean keyboardIsVisible; // which is true if keyboard is visible
if (!keyboardIsVisible) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
这是解决所有问题的代码,除了最终问题,我已经告诉过你如何解决它
CustomSpinner.java
public class CustomSpinner extends Spinner {
Context mainContext;
public CustomSpinner(Context context) {
super(context);
mainContext = context;
}
public CustomSpinner (Context context, AttributeSet attrs) {
super(context, attrs);
mainContext = context;
}
public CustomSpinner (Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mainContext = context;
}
@Override public void
setSelection(int position) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
Activity activity = (Activity) mainContext;
EditText editText = (EditText) activity.findViewById(R.id.edit_text);
InputMethodManager imm = (InputMethodManager)
activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
CustomSpinner customSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edit_text);
button = (Button) findViewById(R.id.button);
customSpinner = (CustomSpinner) findViewById(R.id.spinner);
customSpinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
editText.setEnabled(false);
editText.setEnabled(true);
return false;
}
});
customSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
int count = 0;
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (count > 0){
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}else count++;
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// Do Nothing
}
});
}
}