gpt4 book ai didi

android - Gallery.getChildAt(int position) 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:09 28 4
gpt4 key购买 nike

我正在尝试在 Gallery View 上创建预览效果,但遇到了 Gallery.getChildAt(int position) 的问题,它大部分时间都返回 null。它应该仅在未显示子项时返回 null,但这里不是这种情况,因为用户需要滚动它。有没有办法解决这个问题,或者我应该改变我的方法?这是我的代码:

gallery.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View view, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_UP){
preview_container.setVisibility(View.GONE);
}
else if(event.getDownTime()>2500){
int position = gallery.pointToPosition((int)event.getX(), (int)event.getY());
if (position!=AdapterView.INVALID_POSITION){
View child = gallery.getChildAt(position);
if(child!=null){
Bitmap tmp_bitmap = book.imageForPreview(position);
previewImg.setImageBitmap(tmp_bitmap);
FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(tmp_bitmap.getWidth()+2, tmp_bitmap.getHeight()+2,Gravity.NO_GRAVITY);
int[] coord = new int[2];
child.getLocationOnScreen(coord);
int y = MMBookReader.this.getWindowManager().getDefaultDisplay().getHeight()-(tmp_bitmap.getHeight()+view.getHeight());
int x = (int) coord[0]-(tmp_bitmap.getWidth()-child.getWidth())/2;
layout.leftMargin=x;
layout.topMargin=y;
preview_container.setVisibility(View.VISIBLE);
preview_container.setLayoutParams(layout);
previewPageCount.setText(book.getMmpages().get(position).getPosition()+"/"+book.getPages());
}
}
else
preview_container.setVisibility(View.GONE);
}
return false;
}
});

编辑:我不是要填充 Gallery View ,我已经完成了这部分并且很清楚 Adapter 类的使用。

编辑 2:通过更改行解决:

View child = gallery.getChildAt(position);

与:

View child = gallery.getChildAt( position - gallery.getFirstVisiblePosition() );

最佳答案

你的问题是你假设 position 参数 getChildAt 和你的适配器中的一个项目的位置是相同的——它们不是。

getChildAt 中的位置是 child 在其父 ViewGroup 中的位置,它与您的适配器位置无关——即它从 0 运行到getChildCount()-1

您可以将它与 getFirstVisiblePosition() 结合使用,后者将返回可见的第一项在您的适配器 中的位置。第一个可见 View 也是其父 View 中的第一个 subview ,因此您传递给此项目的 getChildAt 的位置将为 0

关于android - Gallery.getChildAt(int position) 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5991085/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com