2

こんにちは、ビューページャーにボタンをロードしようとしていますが、ロードしていますが、現在画面全体を埋めています。コンテンツを正確なサイズにラップしてから、画面の中央に配置したいと考えています。ボタンのlayoutparamsを設定しようとしましたが、アプリを実行しても親がいっぱいになります。プログラムでボタンのレイアウトと位置を設定する方法を知っている人はいますか?

これが私がこれまでに試したことです

@Override
        public Object instantiateItem(View collection, int position) {

            RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            rel_btn.addRule(RelativeLayout.CENTER_VERTICAL);
            rel_btn.addRule(RelativeLayout.CENTER_HORIZONTAL);
            rel_btn.height = 60;
            rel_btn.width = 60;
            Button tv = new Button(cxt);
            tv.setLayoutParams(rel_btn);
            tv.setText("League " + (position+1));
            tv.setTextColor(Color.WHITE);
            tv.setTextSize(30);
            tv.setBackgroundDrawable(getResources().getDrawable(R.drawable.ls_level_eng1));

            ((ViewPager) collection).addView(tv,0);

            return tv;
        }
4

1 に答える 1

1

コードを介してこれを行っている特定の理由はありますか? 単純にレイアウトを拡張し、レイアウト エディターを使用して を調整することができますButton。そうすれば、あまり推測しなくなります。

public Object instantiateItem(View collection, int position) {

final LayoutInflater mLayoutInflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

final View view = inflater.inflate(R.layout.your_layout, null);

((ViewPager) collection).addView(view, 0);

return view;

その場合、これを行う必要があります。コード内にメモを追加しました。

    public Object instantiateItem(View collection, int position) {

    // Create your LayoutParams
    final RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);

    // Add your rules
    rel_btn.addRule(RelativeLayout.CENTER_VERTICAL);
    rel_btn.addRule(RelativeLayout.CENTER_HORIZONTAL);

    // And anything extra
    rel_btn.height = 60;
    rel_btn.width = 60;

    // Create a new RelativeLayout for your RelativeLayout.LayoutParams
    RelativeLayout relativeLayout = new RelativeLayout(MainActivity.this);

    // Give your RelativeLayout LayoutParams
    relativeLayout.setLayoutParams(rel_btn);

    // Create your Button
    Button tv = new Button(MainActivity.this);
    tv.setText("League " + (position + 1));
    tv.setTextColor(Color.WHITE);
    tv.setTextSize(30);
    tv.setLayoutParams(rel_btn);
    // You don't need to use setBackgroundDrawable if you're only
    // grabbing a Resource
    tv.setBackgroundResource(R.drawable.ls_level_eng1);

    // Add your Button to your RelativeLayout
    relativeLayout.addView(tv);

    // Return your RelativeLayout
    ((ViewPager)collection).addView(relativeLayout, 0);
    return relativeLayout;
}
于 2012-07-14T14:42:03.393 に答える