snapfish과 같은 Gridview를 만들려면 StickyGridHeaders 라이브러리를 사용합니다. 대신 확인란의 헤더보기 (빨간색 화살표)에 버튼을 터치 할 때 나는 팝업 창을 표시StickyGridHeader의 팝업 창이 잘못 표시됩니다.
: 여기 내에서 예상되는 레이아웃입니다. 문제는 내 팝업 창이 항상 잘못된 위치를 표시한다는 것입니다. 내가 보여 주면
public View getHeaderView(final int position, View convertView, ViewGroup parent) {
final HeaderViewHolder viewHolder;
if(convertView == null){
convertView = inflater.inflate(R.layout.item_header_gallery, null);
viewHolder = new HeaderViewHolder();
viewHolder.tvImagePrice = (TextView) convertView.findViewById(R.id.tvImagePrice);
viewHolder.btnTouch = (Button) convertView.findViewById(R.id.btnTouch);
convertView.setTag(viewHolder);
}else{
viewHolder = (HeaderViewHolder) convertView.getTag();
}
ImageGroup item = headers.get(position);
viewHolder.tvImagePrice.setText(item.getPriceString());
viewHolder.btnTouch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int[] location = new int[2];
viewHolder.btnTouch.getLocationOnScreen(location);
// location always is [905,59] for every header item
System.out.println("location = " + location[0] + "," + location[1]);
// show popup on this location:
mPopupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]);
}
});
return convertView;
}
: 윈도우 디버깅에서, 나는 그것이 끈적 헤더와 같은 위치를 가지고 볼 수 있습니다,하지만 난 여기에 StickyGridHeadersGridView.setAreHeadersSticky(false);
를 사용하여 내 gridview에 대한 끈끈한 헤더를 해제하는 것은 내 어댑터 헤더입니다 헤더 대신 자식보기의 팝업이 나타나면 팝업 창이 올바르게 표시됩니다. 문제가 있습니까?
아직 해결하지 못했다면 클릭 한'View'에서 위치를 얻으십시오 :'viewHolder'의 인스턴스 대신'v.getLocationOnScreen (location);'. – myanimal
시도했지만 여전히 gridview 맨 위에 표시됩니다. 이 라이브러리는 첨부 및 분리보기로 헤더보기를 맨 위에 붙이려고했기 때문에 – R4j