0

我有一个包含 anEditText和 a的活动ListViewEditText.TextChangedListener已实现ListView在用户输入文本时从数据库中填充。

我想以ListView.OnItemClickListener这样一种方式实现,它与在软键盘上按提交具有相同的效果:当用户选择 ListView 中的条目之一时,软键盘消失并且EditText失去焦点。

// MainActivity.java

public class MainActivity extends AppCompatActivity {

    EditText myEditText;
    ListView myListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myEditText = findViewById(R.id.my_edit_text);
        myEditText.setOnTextChangedListener(
            (s, start, before, count) -> populateMyListView(s)
        );
    
        myListView = findViewById(R.id.my_list_view);    
        myListView.setOnItemClickListener(
            (parent, view, position, id) -> submitMyEditText()
        );
    }
}

我的问题是,您将如何实施submitMyEditText()

4

2 回答 2

0

所以实际上在 Android 中,EditText 并没有失去对隐藏软键盘的关注。它保持焦点但不再显示键盘。并不是说选择让它失去焦点有什么问题,但如果你这样做,行为将不匹配。

要清除焦点,请使用 editText.clearFocus()。

要隐藏键盘,请使用

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
于 2021-08-08T03:24:12.850 回答
0

尝试这个。如果您遇到错误,请在此处发表评论。

public void submitMyEditText(View view,EditText myEditText){
      hideSoftKeyBoard(view.getContext(),myEditText);
      myEditText.clearFocus();
}

为普通类中的孔项目制作此功能。

public static void hideSoftKeyBoard(Context context,View view){
 InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
} 
于 2021-08-08T04:55:25.197 回答