gpt4 book ai didi

android - 避免 PopupWindow 抢焦点

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:17 26 4
gpt4 key购买 nike

我有一个 EditText,它在每次按键时更新一个 PopupWindow。如果我使用 .setFocusable(true) 创建 PopupWIndow,那么它会捕获焦点并且我无法继续输入。但是,如果我使用 .setFocusable(false),PopupWindow 内的 ListView 不会触发 OnItemClickedListener。

是否可以在不获取焦点的情况下创建 PopupWindow,但仍然可以点击其中的小部件?

(PopupWidow 不用于自动完成,所以我不认为 AutoCompleteTextView 是我需要的)

最佳答案

我猜你可以使用 ListPopupWindow。它为您处理一些焦点问题。这是一个非常简单的代码。它仍然需要添加更多的听众来满足您的需要。但它解决了焦点问题。

ListPopupWindow popup;
EditText editText;
String[] strAry = {"a", "2", "3", "4", "5", "6", "7", "8", "9"};

editText=(EditText)this.findViewById(R.id.editText);
popup= new ListPopupWindow(this.getApplicationContext());
popup.setAdapter(new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,strAry));
popup.setAnchorView(editText);
popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED);

editText.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View eventView) {
if(!popup.isShowing()){
popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED);
popup.show();
}
}
});
editText.addTextChangedListener(new s(){
@Override
public void afterTextChanged(Editable arg0) {}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
if(!popup.isShowing()){
popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED);
popup.postShow();
}
}
});

关于android - 避免 PopupWindow 抢焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10346452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com