0

ビューページャーを使用して CollectionActivity というアクティビティがあります。ビューページャーには独自のアダプター PagerAdapter があります。 CollectionPagerAdapter は PagerAdapter を拡張します。

重要な instantiateItem メソッド:

@Override
public Object instantiateItem(View collection, int position) {
        LinearLayout lay = null;
        if(position==0){
            lay = new Report(context);
            lay.setOrientation(LinearLayout.VERTICAL);
            ((ViewPager) collection).addView(lay);
        }
//else for the other positions...


        return lay;
}

Report クラスのコンストラクタ (LinearLayout を拡張) は次のようになります。

    public Report(Context context) {
    super(context);
    this.context = context;

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = inflater.inflate(R.layout.activity_report, null);

    this.addView(view);

    Button button = new Button(context);
    button.setText("LinearLayoutExtended");

    this.addView(button);

問題; R.layout.activity_report から取得しているビューは、画面上に非常に小さな幅で表示されます。ただし、その下のボタンは、必要な幅を取得します。

activity_report.xml には、塗りつぶしの親の幅と高さがあり、テキストボックス、ボタン、その他のもので満たされた水平レイアウトから始まります。Activity_report.xml は、Eclipse のプレビューで見栄えがよく、以前にアクティビティに使用したときも見栄えがよくなりました。

this.addView(view) を使用してレイアウト activity_report.xml を追加し、それを画面全体に表示できないのはなぜですか? (現在のように狭い幅ではありません)

4

2 に答える 2

0

addView(View) を使用する場合、親ビューの LinearLayout.LayoutParams を指定する必要があります。

于 2013-07-13T16:52:53.507 に答える