我發現了一個解決方案,可以做到那麼下面
當u按EditText上鍵盤上顯示當U按下微調消失
然後當U上微調選擇項目即使同一項目鍵盤再次出現
最終的概率,你有,如果我按微調(所以鍵盤消失),然後我按下屏幕上的任何地方(我想鍵盤重新出現),這很容易,只是使全局布爾設置爲true,每次你使鍵盤a ppears反之亦然,使onClickListener對於除微調ofcourse在活動的所有意見和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
}
});
}
}
這隻能如果讓我選擇一個項目(不一樣的已選擇的項目) – yvi
可能在微調上述EDITTEXT你可以檢查,當用戶點擊進入轉到下一個EDITTEXT(在這種情況下必須關閉鍵盤),你應該檢查是否選擇了微調項目,如果選擇了它,那麼你應該使用上面的代碼打開下一個editText的鍵盤 – Anmol