ListPopupWindow 键入后关闭

问题描述 投票:0回答:1

我试图在我的应用程序中使用提及类型弹出窗口,当弹出窗口出现时,用户滚动,然后继续键入弹出窗口关闭。有没有办法让弹出窗口保持打开状态,直到我们调用解雇?

这是我正在使用的代码。

    public class MainActivity extends AppCompatActivity
{

    private EditText editText;
    private ListPopupWindow listPopup;

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

        editText = (EditText) findViewById(R.id.editText);

        String[] states = getResources().getStringArray(R.array.state_array);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, states);

        listPopup = new ListPopupWindow(this);
        listPopup.setHeight(300);
        listPopup.setAnchorView(editText);
        listPopup.setAdapter(adapter);
        //listPopup.setModal(false);



        listPopup.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                Toast.makeText(MainActivity.this, "Position " + String.valueOf(position) + " Clicked", Toast.LENGTH_SHORT).show();
            }
        });


        editText.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if(!listPopup.isShowing())
                {
                    listPopup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED);
                    listPopup.show();
                    listPopup.getListView().setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
                    editText.requestFocus();
                }
            }
        });
    }

}
android listview popupwindow mention
1个回答
0
投票

我遇到了类似的问题,即使我设置了

INPUT_METHOD_NEEDED
标志,
ListPopupWindow
实现在调整弹出窗口大小时也会覆盖它。

我的解决方案是每次在列表适配器中进行更改时强制

inputMethodMode = INPUT_METHOD_NEEDED
。这解决了华丽的弹出窗口可见性变化,并且即使适配器更新,弹出窗口也保持在原位。

类似的东西

fun updatesAdapterItems(list: List<Items>) {
    inputMethodMode = INPUT_METHOD_NEEDED
    adapter.submitList(list)
}
© www.soinside.com 2019 - 2024. All rights reserved.