1. 程式人生 > >在Popupwindow佈局中巢狀ScrollView,滑動內容時檢視出現反覆閃爍的問題

在Popupwindow佈局中巢狀ScrollView,滑動內容時檢視出現反覆閃爍的問題

解決辦法:

將顯示PopupWindow的方法由showAsDropDown()改為showAtLocation()

程式碼如下

private PopupWindow popupWindow_scrollview;
private void showPopupwindow(String message) {
        View contentView = View.inflate(context,R.layout.dialog_content_view, null);
        DialogViewHolder viewHolder = new DialogViewHolder(contentView);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { viewHolder.tvGameMessageDialogContent.setText(Html.fromHtml(message)); } else { viewHolder.tvGameMessageDialogContent.setText(Html.fromHtml(message, Html.FROM_HTML_MODE_COMPACT)); } viewHolder.ivGameMessageDialogClose
.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (popupWindow_scrollview.isShowing()) { popupWindow_scrollview.setFocusable(false); popupWindow_scrollview.dismiss(); } } });
popupWindow_scrollview = new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,true); popupWindow_scrollview.getContentView().setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { popupWindow_scrollview.setFocusable(false); return true; } }); if (!popupWindow_scrollview.isShowing() && !mActivity.isFinishing()) { //以下三種方法內容在滑動時PopupWindow均會出現反覆閃爍的問題 //popupWindow_list.showAsDropDown(contentView); //popupWindow_list.showAsDropDown(contentView, 0, 0); //popupWindow_list.showAsDropDown(contentView, 0, 0,Gravity.CENTER); //經過測試改為以下方法後滑動正常 popupWindow_scrollview.showAtLocation(contentView, Gravity.CENTER, 0, 0); } }