首页 > 解决方案 > 如何为 Spinner 之外的点击事件设置监听器?

问题描述

现在我有一个已被单击的 Spinner 并且 DropDownView 正在显示,我想在 Spinner 之外单击并做一些事情。

如何收听微调器之外的单击事件?

我尝试了一些方法(例如覆盖dispatchTouchEvent()Activity)来解决这个问题,但是我发现dispatchTouchEvent()在显示DropDownView时无法执行方法:

//Kotlin
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
    //do something I want
    return super.dispatchTouchEvent(ev)
}

标签: android

解决方案


微调器的用户自定义对话框,并为外部单击设置 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>

推荐阅读