无法为带有listItem的Item获取X和Y.

时间:2014-03-25 15:13:19

标签: android android-listview

我有一个包含ImageView的listView。单击imageView时,我试图获取它的X和Y位置。但它似乎返回0.

我不确定使用listItem引用ImageView的方式是否正确。

ivX和ivY返回0

以下是适配器的代码段:

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{    
    final int temp = position;

    if(convertView==null)
    {
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      convertView = inflater.inflate(R.layout.listitem, parent,false);
    }

    TextView chapterName = (TextView) convertView.findViewById(R.id.textView1);
    TextView chapterDesc = (TextView) convertView.findViewById(R.id.textView2);

    final ImageView listImg = (ImageView) convertView.findViewById(R.id.imageView1);

    final ImageView hiddenImg = (ImageView) activity.findViewById(R.id.imageViewHidden);

    final LinearLayout ll = (LinearLayout) activity.findViewById(R.id.linearLayout1);

    if(a==0)
    {
        ll.setAlpha(0);
        a=1;
    }


    //hiddenImg.setImageAlpha(0);

    listImg.setOnClickListener(new OnClickListener() 
    {


        @Override
        public void onClick(View v) 
        {
            Toast.makeText(context, "Imagine Dragons" + " " + Integer.toString(temp), Toast.LENGTH_LONG).show();

            ImageView ivTemp = (ImageView) v;

            ivX = listImg.getX();
            ivY = listImg.getY();

            Log.i("imageview",Float.toString(ivX));
            Log.i("imageview",Float.toString(ivY));

            ll.setAlpha(1);
            AnimateIt(hiddenImg,ivX,ivY);
        }
    });

listItem.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
     >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="23dp"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/imageView1"
        android:text="CodeLearn Chapter 1"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_alignLeft="@+id/textView1"
        android:text="Description" />

</RelativeLayout> 

1 个答案:

答案 0 :(得分:0)

我相信你想要查询:

ivX = ivTemp.getX();
ivY = ivTemp.getY();

相反,这也会为您提供相对于 ListView ImageView 的位置。

您对ImageView的位置有何意义?左上角以像素为单位,可以实现屏幕的左上角?

您还可以在View对象上使用.getLocationOnScreen()方法:

int[] location = new int[2];
ivTemp.getLocationOnScreen(location);
int ivX = location[0];
int ivY = location[1];