0

私はアンドロイドでポップアップを実装しています。ポップアップの外側をクリックすると閉じることができますが、同じimageview/ボタンをクリックしても閉じることができます。

1.on click on button1 it opens pop up
2.If I click outside it closes pop up
3.If I click on button1(when pop up is open), it closes pop and reopens it again

私が欲しいのは、ボタン1をクリックすると(ポップアップが開いているとき)、ポップを閉じるだけで、2回クリックしない限り再び開​​きません。

これは可能ですか?

注:ポップアップウィンドウ内に閉じるボタンは必要ありません。

 pop_one.setOnClickListener(new OnClickListener() {

                 public void onClick(final View v) {

                    pop_one.getLocationOnScreen(location);

                         p = new Point();

                         p.x = location[0];

                         p.y = location[1];

                     popupshow(one_one_text,pop_one);


                 }
             });

そして、その方法は次のとおりです。

public void popupshow(String pop_text, ImageView pop_one) {


    int width = display.getWidth(); // deprecated
    System.out.println("jsfjsfjnsdf"+width);
    int new_width = width-(width/6) ;

    LayoutInflater layoutInflater = (LayoutInflater) getActivity()
            .getBaseContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
    View popupView = layoutInflater.inflate(
            R.layout.career_options_popup_short, null);

    final PopupWindow popupWindow = new PopupWindow(popupView, new_width,
            LayoutParams.WRAP_CONTENT);

    TextView popup_text = (TextView) popupView
            .findViewById(R.id.popup_text);
    popup_text.setMinimumWidth(300);
    popup_text.setText(pop_text);
    popupWindow.setBackgroundDrawable(new BitmapDrawable());
    popupWindow.setOutsideTouchable(true);

    popupWindow.showAsDropDown(popupView,p.x/10, p.y +p.x/8);

    System.out.println("value of x" + p.x+" "+p.y);

    //System.out.println("value of new width " + new_width+"  get width  "+popupWindow.getWidth()+" text box width "+popup_text.getWidth()+"pop view"+popupView.getWidth());
    popupWindow.setFocusable(true);



}

よろしく、アスミ

4

3 に答える 3

2

これで問題が解決すると思いますボタンクリックでこれを呼び出します

popupWindow.dismiss();
于 2013-03-06T07:19:47.113 に答える
0

setOutsideTouchable(false)ポップアップウィンドウのプロパティを設定する必要があります

于 2013-03-06T07:36:12.700 に答える
-1

必要なのはbooleanisShowingで、これbooleanを関数でtrueに設定しますpopupshow

このような

public void popupshow(String pop_text, ImageView pop_one) {

    isShowing=true;
    int width = display.getWidth(); // deprecated
    System.out.println("jsfjsfjnsdf"+width);
    int new_width = width-(width/6) ;

    LayoutInflater layoutInflater = (LayoutInflater) getActivity()
            .getBaseContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
    View popupView = layoutInflater.inflate(
            R.layout.career_options_popup_short, null);

    final PopupWindow popupWindow = new PopupWindow(popupView, new_width,
            LayoutParams.WRAP_CONTENT);

    TextView popup_text = (TextView) popupView
            .findViewById(R.id.popup_text);
    popup_text.setMinimumWidth(300);
    popup_text.setText(pop_text);
    popupWindow.setBackgroundDrawable(new BitmapDrawable());
    popupWindow.setOutsideTouchable(true);

    popupWindow.showAsDropDown(popupView,p.x/10, p.y +p.x/8);

    System.out.println("value of x" + p.x+" "+p.y);

    //System.out.println("value of new width " + new_width+"  get width  "+popupWindow.getWidth()+" text box width "+popup_text.getWidth()+"pop view"+popupView.getWidth());
    popupWindow.setFocusable(true);



}

今、あなたがクリックするときbutton1、これをチェックしてくださいboolean

pop_one.setOnClickListener(new OnClickListener() {

                 public void onClick(final View v) {

                  if(isShowing)
                  {
                       popupWindow.dismiss();
                       isShowing=false;
                  }
                  else
                  {
                    pop_one.getLocationOnScreen(location);

                     p = new Point();

                     p.x = location[0];

                     p.y = location[1];

                     popupshow(one_one_text,pop_one);

}
                 }
             });
于 2013-03-06T07:36:57.907 に答える