弹出窗口刚刚打开时,我该怎么做?有一种方法isPopupShowing()
,但不幸的是没有像onPopupShow()
回调。Android。检测何时打开AutoCompleteTextView弹出窗口
回答
嗯,不知道是否有一个更简单的方法,这是一个有点变通办法的,但你可以尝试添加通过addTextChangedListener
TextWatcher
并做了isPopupShowing()
检查是否弹出到了。再次,它的一些解决方法,并不会工作,如果你prorammatically显示弹出。
这个解决方案非常接近我的目的,一个问题是我只能在第二次文本更改后才能依靠'isPopupShowing()',并且在第一次出现时无法立即检测到弹出窗口。 – begezavr 2015-04-03 14:29:11
嗯,作为替代方法,您可以尝试覆盖'AutocompleteTextView'的'onFilterComplete(int count)'方法,并检查count> 0是否意味着至少有一个值显示在弹出窗口上,所以popup应该在当时可见。这需要一些测试,以确定它是否真的有效:) – 2015-04-08 12:33:30
@EvripidisDrakos你的建议是最好的方法来做到这一点。如果你有一些过滤结果,并且弹出窗口当前没有显示(isPopupShowing()),那么你知道你即将展示它。使用文本更改的事件将不起作用;即使afterTextChanged()发生在显示弹出窗口之前。 – ritmatter 2016-01-25 20:15:56
我的答案可能有点不同,但它有效,当你有有效的结果。
1.-延长AutoCompleteTextView
自己的类:
public class ContractsAutoCompleteTextView extends android.support.v7.widget.AppCompatAutoCompleteTextView {
public ContractsAutoCompleteTextView(Context context) {
super(context);
}
public ContractsAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ContractsAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
2:我们知道,当过滤项目(和后来才所示)onFilterComplete(int count)
会得到通知。介绍在你的类:
@Override
public void onFilterComplete(int count) {
super.onFilterComplete(count);
}
3 .-创建interface
通知UI有多少项被过滤每次更改文本时间:
interface OnContractsAvailability {
void contractsRetrieved(int count);
}
private OnContractsAvailability onContractsAvailability;
public void setOnContractsAvailability(OnContractsAvailability onContractsAvailability) {
this.onContractsAvailability = onContractsAvailability;
}
4.-现在通知您interface
:
@Override
public void onFilterComplete(int count) {
super.onFilterComplete(count);
if (onContractsAvailability != null) {
onContractsAvailability.contractsRetrieved(count);
}
}
这是全班
/**
* Created by rafaelruizmunoz on 07/07/2017.
*/
public class ContractsAutoCompleteTextView extends android.support.v7.widget.AppCompatAutoCompleteTextView {
public ContractsAutoCompleteTextView(Context context) {
super(context);
}
public ContractsAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ContractsAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void onFilterComplete(int count) {
super.onFilterComplete(count);
if (onContractsAvailability != null) {
onContractsAvailability.contractsRetrieved(count);
}
}
interface OnContractsAvailability {
void contractsRetrieved(int count);
}
private OnContractsAvailability onContractsAvailability;
public void setOnContractsAvailability(OnContractsAvailability onContractsAvailability) {
this.onContractsAvailability = onContractsAvailability;
}
}
这是UI实现
contractsET.setOnContractsAvailability(count -> System.out.println(String.valueOf(count)));
而这些结果
11月7日至7日:51:36.975 32174-32174 /? I/System.out:3138
07-07 11:51:37.520 32174-32174 /? I/System.out:1147
07-07 11:51:37.656 32174-32174 /? I/System.out:167
07-07 11:51:38.538 32174-32174 /? I/System.out:87
07-07 11:51:39.240 32174-32174 /? I/System.out:17
07-07 11:51:40.039 32174-32174 /? I/System.out:3
07-07 11:51:41.343 32174-32174 /? I/System.out:0
- 1. 检测阻止的弹出窗口而不打开弹出窗口
- 2. 检测窗口何时被打开
- 3. 如何打开弹出窗口并关闭弹出窗口?
- 4. 如何在弹出窗口中打开弹出窗口?
- 5. 打开HTML弹出窗口
- 6. 如何检测我的窗口在弹出窗口中是否打开
- 7. Selenium WindowHandles没有检测到所有打开的弹出窗口
- 8. 如何在同时关闭已打开的弹出窗口时打开弹出窗口
- 9. WPF打开弹出窗口并在弹出窗口打开时在主窗口上工作
- 10. 在ASP.NET的弹出窗口中打开一个弹出窗口
- 11. 如何打开弹出式窗口
- 12. 如何打开弹出窗口并刷新弹出窗口关闭时打开的页面?
- 13. 打开弹出窗口时禁用窗口
- 14. 我们如何在Radwindow弹出窗口中打开raddatepicker弹出窗口
- 15. Silverlight弹出窗口:如何在打开弹出窗口后调用方法?
- 16. 当弹出窗口时Android弹出窗口消失
- 17. 打开新窗口弹出窗口与浏览器分开
- 18. 如何从Silverlight Out-of-Browser打开窗口弹出窗口?
- 19. 如何检测bootstrap弹出窗口上的单击对象是否打开?
- 20. 未在codeigniter中打开弹出窗口
- 21. MVC在弹出窗口中打开PDF
- 22. 未打开弹出窗口 - 引导
- 23. 打开的弹出窗口点击
- 24. 使用javascript打开弹出窗口
- 25. 关于打开新的弹出窗口
- 26. 有一个弹出窗口打开后
- 27. 打开一个弹出窗口
- 28. 打开弹出窗口呼吁行动
- 29. 在弹出窗口中打开Spring jsp
- 30. Android:如何在弹出窗口中打开WebView?
你想要做什么?弹出窗口打开之前你想做些什么吗? – Pankaj 2015-04-03 09:44:16
@Clairvoyant我想发送一条消息到我的统计服务器关于这个弹出窗口打开:)之前或之后是无关紧要的,我只是想知道popup保证打开并在服务器上计数。 – begezavr 2015-04-03 10:02:51