android - 如何为 Spinner 之外的点击事件设置监听器?
问题描述
现在我有一个已被单击的 Spinner 并且 DropDownView 正在显示,我想在 Spinner 之外单击并做一些事情。
如何收听微调器之外的单击事件?
我尝试了一些方法(例如覆盖dispatchTouchEvent()
Activity)来解决这个问题,但是我发现dispatchTouchEvent()
在显示DropDownView时无法执行方法:
//Kotlin
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
//do something I want
return super.dispatchTouchEvent(ev)
}
解决方案
微调器的用户自定义对话框,并为外部单击设置 dialog.setCancelable(true)。
final Dialog dialog = new Dialog(activity);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog);
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="80dp"
android:background="#3E80B4"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_dia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:text="This is spinner"
android:textColor="@android:color/white"
android:textSize="15dp"
android:textStyle="bold"/>
<Spinner
android:id="@+id/size_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/size_entries" />
</LinearLayout>
推荐阅读
- python - MovieWriter ffmpeg 不可用;试图使用
反而 - visual-studio-code - VS Code 2017 F12 或 Crtl Click Goto Definition 不起作用,Angular 7.3.9
- node.js - 如何混合原生插件和模块?
- angular - 使用 Angular 直接打印收据
- asp.net-mvc - OIDC、OAuth2.0和OAuth客户端应用程序和资源服务器不不同时访问令牌的作用
- node.js - 如何在节点js中获取文件名的路径
- python - 路径作为字符串返回不正确的值(在 Windows 中)
- r - 在 R 函数中找不到要编辑的特定代码行?
- rest - 如何在 Apache Flink 程序中调用 REST API
- django - Django ORM“过滤器”方法生成不带引号的 SQL 查询