2017-04-06 6 views
1

私はこれを動作させるためにしばらく時間を費やして、類似のソリューションをオンラインで探しましたが、うまくいかないようです。ウィンドウの外側をクリックするのではなく、生成ボタンをクリックするだけで私のPopupWindowを解除する必要があります。誰でもこの問題が発生しましたか? popupRAMS.setFocusable(偽)の設定Android - PopupWindow以外のボタンをクリックしないようにする

private void LoadRAMSPopup() { 
    mainLayout.getForeground().setAlpha(150); 
    LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); 

    final View ramsView = layoutInflater.inflate(R.layout.popup_rams, null); 
    final PopupWindow popupRAMS = new PopupWindow(
      ramsView, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT 
    ); 

    if (Build.VERSION.SDK_INT >= 21) { 
     popupRAMS.setElevation(5.0f); 
    } 

    findViewById(R.id.mainLayout).post(new Runnable() { 
     @Override 
     public void run() { 
      popupRAMS.showAtLocation(findViewById(R.id.mainLayout), Gravity.CENTER, 0, 0); 
      popupRAMS.setOutsideTouchable(false); 
      popupRAMS.setFocusable(true); 
      popupRAMS.update(); 

      Button btnGenerate = (Button) ramsView.findViewById(R.id.btnGenerate); 
      btnGenerate.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent intent = new Intent(getApplicationContext(), CreateRAMSActivity.class); 
        startActivity(intent); 
        popupRAMS.dismiss(); 
        mainLayout.getForeground().setAlpha(0); 
       } 
      }); 
     } 
    }); 
} 

答えて

3

。ポップアップウィンドウを消すために必要な不要なタッチを除去します。だから、

popupRAMS.setFocusable(false); 

popupRAMS.setFocusable(true); 

を交換してください。また

popupRAMS.setOutsideTouchable(false); 

を追加しようと、それはあなたを助けることを願っています。

+0

を試してみてください、しかし、私はまた、すべてを防ぐために必要がありますポップアップがクリック可能であるという下のビューでは、クリックが可能です。 – James

+0

その場合、私はあなたのポップが動作するとは思わない。これを1つのレイアウトファイルで管理する必要があります。 –

+0

これはどのように達成されますか?前にそのようにしたことはありません... – James

0

使用

dialog_obj.setCancelable(false) 
+0

このコードは質問に答えるかもしれませんが、_how_および/または_why_に関する追加の[context](https://meta.stackexchange.com/q/114762)を提供することで、問題が改善されますその答えは長期的な価値です。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!あなたの答えを説明し、どんな制限と前提が適用されるかを示すためにあなたの答えを編集してください(http://stackoverflow.com/posts/43256046/edit)。また、この答えが他のものよりも適切である理由についても言及していません。 –

+0

全く動作しません。 'PopupWindow'は' setCancelable'メソッドを持っていません。 – HughHughTeotl

0

それはポップアップが外部のクリックで却下することはできませんので、これはある程度機能し、この1

popupRAMS.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, android.R.color.transparent))); 
popupRAMS.setOutsideTouchable(false); 
関連する問題