我有一个包含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>
答案 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];