3

リソース値の配列内の位置によって識別される一連の画像を表示する ViewPager を作成しています。instantiateItemアダプターのコードは次のとおりです。

//indexes the images
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0.getTag().equals(arg1);
}

//serves the views
@Override
public Object instantiateItem(ViewGroup container, int position) {
    ImageView view = new ImageView(container.getContext());
    view.setScaleType(ScaleType.FIT_CENTER);
    view.setTag(position);
    view.setImageResource(mImages.get(position));
    container.addView(view, position);
    return view;
}

表示されません。見てみるcontainer.getChildAt(0)と、レイアウト パラメータが に設定されていることを確認できますMATCH_PARENTが、幅と高さは 0 です。コンテナ自体の幅と高さは、(予想どおり) 画面の寸法です。

コードを次のように変更します

@Override
public Object instantiateItem(ViewGroup container, int position) {
    ImageView view = (ImageView) View.inflate(container.getContext(), R.layout.imageview, null);
    view.setScaleType(ScaleType.FIT_CENTER);
    view.setTag(position);
    view.setImageResource(mImages.get(position));
    container.addView(view, position);
    return view;
}

(どこに inR.layout.imageviewがあるだけのレイアウトですImageView)は機能しませんでした。背景色を任意の表示可能な値に設定すると、ビューが本質的に表示されないことが示されます。どうしたの?

4

1 に答える 1

1

返されるオブジェクトはではなく、 を識別するためView使用されるオブジェクトです。この場合、位置はインデックスとして使用されているため、戻り値は位置である必要があります。View

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0.getTag().equals(arg1);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    ImageView view = new ImageView(container.getContext());
    view.setScaleType(ScaleType.FIT_CENTER);
    view.setTag(position);
    view.setImageResource(mImages.get(position));
    container.addView(view, position);
    return position;
}
于 2013-07-09T17:59:52.323 に答える