在AChartEngine中的parentView上未检测到OnClick事件

时间:2014-02-26 09:09:32

标签: android graph achartengine

我使用以下代码在LinearLayout上绘制GraphView,其父级是RelativeLayout

在LinearLayout上绘制GraphView的代码

  mLinearView = (LinearLayout) findViewById(R.id.LinearView);//ChildLayout
    mRelativeView = (RelativeLayout) findViewById(R.id.RelativeLay);//ParentLayout

YearXYGraph mYearGraph = new YearXYGraph();
                final GraphicalView mGraphView = mYearGraph.execution(
                        MainActivity.this, mGirlHeightYearFirstGrade,
                        mGirlHeightYearSecondGrade,
                        mGirlHeightYearThirdGrade,
                        mGirlHeightYearFourthGrade,
                        mGirlHeightYearFifthGrade, mGirlWeightYearFirstGrade,
                        mGirlWeightYearSecondGrade, mGirlWeightYearThirdGrade,
                        mGirlWeightYearFourthGrade, mGirlWeightYearFifthGrade);
                mLinearView.addView(mGraphView);

点击LinearLayout我正在显示一个弹出窗口,代码如下

mGraphView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    double[] xy = mGraphView.toRealPoint(0);
                       p = new Point();
                          p.x = (int) xy[0];
                          p.y = (int) xy[1];

                          if (p != null){
                              showPopup(MainActivity.this, p);
                            }
                }
            });

我还在ParentLayout上使用onClick事件来获得一些坐标

mRelativeView.setOnTouchListener(new RelativeLayout.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        System.out.println("in--");
                        p1 = new Point();
                        p1.x = (int) event.getX();
                        p1.y = (int) event.getY();
                        System.out.println("x--"+p1.x);
                            return false;
                    }
                });

显示弹出窗口的代码

// The method that displays the popup.
private void showPopup(final Activity context, Point p) {
   int popupWidth = 75;
   int popupHeight = 40;
   // Inflate the popup_layout.xml
   LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
   LayoutInflater layoutInflater = (LayoutInflater) context
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);

   // Creating the PopupWindow
   final PopupWindow popup = new PopupWindow(context);
   popup.setContentView(layout);
   popup.setWidth(popupWidth);
   popup.setHeight(popupHeight);
   popup.setFocusable(true);

    Rect location = new Rect();
    location.left =p1.x;
    location.top = p1.y;
    location.right = location.left + popup.getWidth();
    location.bottom = location.top + popup.getHeight();

 /*  // Some offset to align the popup a bit to the right, and a bit down, relative to button's position.
   int OFFSET_X = 30;
   int OFFSET_Y = 30;*/

   // Clear the default translucent background
   popup.setBackgroundDrawable(new BitmapDrawable());

   // Displaying the popup at the specified location, + offsets.
  // popup.showAtLocation(layout, Gravity.TOP|Gravity.LEFT, location.left , location.bottom );
   popup.showAtLocation(layout, Gravity.TOP|Gravity.LEFT, location.left , location.bottom );

   // Getting a reference to Close button, and close the popup when clicked.
   TextView firstView = (TextView) layout.findViewById(R.id.textView1);
   firstView.setText(p.x + " , " +p.y);
    firstView.setTextColor(Color.WHITE);
}

问题是在ParentLayout上未检测到onClickEvent,Child Layout检测到OnClick,请提供一些建议

0 个答案:

没有答案