2011-08-15 3 views
1

사용자 정의보기를 요소로 사용하는 사용자 지정 어댑터가 제공되는 갤러리가 있습니다. 기본적으로이 요소를 70 %로 조정해야합니다. 문제는 갤러리가 100 % 크기로 30 % 투명한 패딩 = 요소 사이의 간격이 큰 것처럼 동작한다는 것입니다. 더 나은 이해를 위해 요소를 100 % 및 70 %로 확대 한 두 개의 이미지를 첨부했습니다. 이 서로 다른 해상도에 이상한 행동을하는 것처럼어린이의 경우 setScaleX/Y가있는 갤러리

Elements scaled to 100%

Elements scaled to 70%

나는 setSpacing를 하드 수 없습니다. 행운을 빌어 setSpacing (0)을 시도했습니다. 원래 크기가 아닌 작은 (70 %) 요소처럼 갤러리가 어떻게 동작 할 수 있습니까?

public MagazineCell(Context context) { 
    super(context); 

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    layout = (RelativeLayout) inflater.inflate(R.layout.mag_big, null); 
    addView(layout); 

    this.setScaleX(0.7f); 
    this.setScaleY(0.7f); 
} 

I는 아니오 갤러리의 drawChild의 크기()을 설정하려고 : I가 RelativeLayout의 연장 맞춤 요소 MagazineCell의 생성자 setScaleX/Y를 추가하여 소자 스케일링있어

운. 어댑터에서 나는 단순히 갤러리 요소에이 클래스를 사용하고 있습니다 :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    MagazineCell cell; 
    position = getPosition(position); 

    if (null == convertView || convertView.getClass() != MagazineCell.class) { 
     cell = new MagazineCell(context); 
    } else { 
     cell = (MagazineCell) convertView; 
    } 

    return cell; 
} 

갤러리는 특별한 코드가 없습니다. Android 3.1을 실행하는 Acer Iconia TAB A500에서 SDK 11을 사용하고 있습니다.

어떤 힌트 나 의견을 보내 주셔서 감사합니다.

+0

이 문제도 만났습니다. –

답변

0

크기 조정 된 너비로 확대/축소 된 셀을 측정하기 위해 갤러리를 "속이는"방법이없는 것처럼 보입니다. 그래서 음수 간격을 사용했습니다. setSpacing (-100); MagazineCell 클래스에서 onMeasure 메서드를 재정의하고 확장 된 너비를 계산하는 방법이있을 수 있습니다. 그러나 나는 이것을 시도하지 않았다.

0

이후
이 .setScaleX (0.7f);
this.setScaleY (0.7f);

this.setPivotX (0);
this.setPivotY (0);