getX()和getY()在OnClickListener

时间:2017-05-08 19:47:51

标签: java android

我目前有一个GridView设置,使用单元格的getX()和getY()点击添加TextView。当我试图将其从OnClickListener移开时,为cellView的getX()和getY()值返回的值始终为0.0,而不是OnclickListener中的OnClick接口中给出的值。如何在侦听器外部的onClickListener中获取getX()?

 @Override
public View getView(int position, View convertView, ViewGroup parent) {

    View cellView;
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    cellView = inflater.inflate(R.layout.cell_calendar, parent, false);

    TextView textView = (TextView) cellView.findViewById(R.id.calendar_date);
    textView.setText("" + dateArrayList.get(position).getDate());


    System.out.println(cellView.getX() + " / " + cellView.getY());      //Returns 0

    cellView.setOnClickListener(new View.OnClickListener() {


        public void onClick(View view) {

            float buffer = bar1.getY();
            System.out.println(cellView.getX() + " / " + cellView.getY());          //Returns actual Location
            addText(cellView.getX() + 15, cellView.getY() + buffer, "Test String"); 

        }


});

public void addText(float x, float y, String textName) {

    TextView mTextView = new TextView(context);
    mTextView.setTextColor(Color.parseColor("#000000"));
    mTextView.setText(textName);
    mTextView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    mTextView.setX(x);
    mTextView.setY(y);
    mTextView.setTextSize(mTextView.getTextSize() * .15f);

    mContainer.addView(mTextView);
}

2 个答案:

答案 0 :(得分:0)

我的避风港' t一起使用GridView控件之前,所以原谅我,如果我'错了,但你可以尝试使用setOnItemClickListener代替setOnClickListener

答案 1 :(得分:0)

我使用ViewTreeObserver修复了此问题。 Android在创建时将每个视图都设置为0,但ViewTreeObserver将允许您在绘制和对齐视图后获取位置。