package com.basic.security.widget; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.os.SystemClock; import android.util.AttributeSet; import android.view.View; import android.widget.ListPopupWindow; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.Spinner; import com.basic.security.R; import com.basic.security.base.BaseApplication; import com.basic.security.fragment.HomeFragment; import com.basic.security.fragment.helper.HomeGridViewAdapter; import java.lang.reflect.Field; public class CustomSpinner2 extends Spinner { public CustomSpinner2(Context context) { this(context, null); initView(); } public CustomSpinner2(Context context, AttributeSet attrs) { this(context, attrs, 0); initView(); } public CustomSpinner2(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle, 0, 1); initView(); } private void initView() { try { Field f = this.getClass().getSuperclass().getDeclaredField("mPopup"); f.setAccessible(true); ListPopupWindow listPopupWindow = (ListPopupWindow) f.get(this); listPopupWindow.setAnimationStyle(R.style.ListPopupWindowAnimation); listPopupWindow.setModal(false); Field popupWindowField = listPopupWindow.getClass().getSuperclass().getDeclaredField("mPopup"); popupWindowField.setAccessible(true); PopupWindow popupWindow = (PopupWindow)popupWindowField.get(listPopupWindow); Field mOnDismissListenerField = popupWindow.getClass().getDeclaredField("mOnDismissListener"); mOnDismissListenerField.setAccessible(true); final PopupWindow.OnDismissListener onDismissListener = (PopupWindow.OnDismissListener)(mOnDismissListenerField.get(popupWindow)); listPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { onDismissListener.onDismiss(); if (viewHolder != null) { new Thread(){ @Override public void run() { SystemClock.sleep(10); BaseApplication.getApplication().activity.runOnUiThread(new Runnable() { @Override public void run() { // viewHolder.alarmPerson.setVisibility(View.VISIBLE); // viewHolder.showMatchPersonList.setVisibility(VISIBLE); if ("人脸".equals(viewHolder.alarm.get("alarmType"))) { // viewHolder.showMatchPersonList.setVisibility(VISIBLE); } } }); } }.start(); } } }); ListView listView = listPopupWindow.getListView(); if (listView != null) { listView.setBackground(null); listView.setDivider(null); listView.setDividerHeight(0); } } catch (Exception e) { e.printStackTrace(); } } @Override public boolean performClick() { boolean handle = super.performClick(); initView(); return handle; } HomeGridViewAdapter.AlarmListAdapter.ViewHolder viewHolder; public void setViewHolder(HomeGridViewAdapter.AlarmListAdapter.ViewHolder viewHolder) { this.viewHolder = viewHolder; } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); } }