【问题标题】:AutoCompleteTextView, DropDown, setOnDismissListener, <17 apiAutoCompleteTextView, DropDown, setOnDismissListener, <17 api
【发布时间】:2016-06-27 18:05:48
【问题描述】:

请帮忙

setOnDismissListener 仅适用于 API >=17

如何检测低于 17 的 API 中 AutoCompleteTextView DropDowns 的出现和消失?

【问题讨论】:

  • 你的代码是什么样的?你试过什么?你怎么知道setOnDismissListener在API>=17中不起作用?

标签: android autocompletetextview dropdown


【解决方案1】:

我已经在 API 级别 16 上进行了测试(运行良好)。但是对于 Android 大师的问题:我认为这不是那么合适的方法,我期待您的明智建议:

将此代码发送到public class CustomAutoCompleteTextView extends AutoCompleteTextView

public void setupActv() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        setOnDismissListener(new OnDismissListener() {
            @Override
            public void onDismiss() {
                Log.d("testThisShit", "on Dismiss");
            }
        });
    } else {
        try {
            Field popup = AutoCompleteTextView.class.getDeclaredField("mPopup");
            popup.setAccessible(true);
            ListPopupWindow popupWindow = (ListPopupWindow) popup.get(this);

            popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
                @Override
                public void onDismiss() {
                    Log.d("testThisShit", "on Dismiss < 17");
                }
            });

        } catch (NoClassDefFoundError | ClassCastException | NoSuchFieldException | IllegalAccessException e) {
            Log.d("testThisShit", e.getMessage());
        }
    }
}

【讨论】:

    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多