0

プログラムでrelativeLayoutを作成する際に問題が発生しています。理解を深めるために、下の図を添付しました。プラスとマイナスが付いているものはボタンであり、これも動的に作成してレイアウトに追加する必要があります。tv4 と tv5 の値は、ボタンの押下に応じて増減する必要があります。

私がこれまでに行ったこと:

1) レイアウトの作成:

RelativeLayout rl = new RelativeLayout(this);
    rl.setId(i);
    rl.setBackgroundResource(R.drawable.bg);
 RelativeLayout.LayoutParams Lparams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        Lparams.addRule(RelativeLayout.BELOW, R.id.RL_default);
        Lparams.setMargins(3, 5, 3, 0);
        rl.setLayoutParams(Lparams);

2) tv1 の追加:

  Lparams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    Lparams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
    Lparams.setMargins(10, 0, 0, 0);

    TextView txt = new TextView(this);
    txt.setTextColor(Color.parseColor("#FFFFFF"));
    txt.setId(x);
    txt.setTextSize(25);
    txt.setLayoutParams(Lparams);
    txt.setText(name);
            rl.addView(txt);

3) tv2 の追加:

           Lparams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    Lparams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
    Lparams.addRule(RelativeLayout.BELOW, txt.getId());
    Lparams.setMargins(10, 0, 0, 0);

    TextView txtS = new TextView(this);
    txtS.setId(y);
    txtS.setText("Test: ");
    txtS.setTextSize(22);

    txtS.setLayoutParams(Lparams);
    txtS.setGravity(Gravity.BOTTOM);
    txtS.setPadding(0, 0, 0, 20);
            rl.addView(txtS);

4) ここで、最初のボタンを作成します。

           Button btnSminus = new Button(this);
    btnSminus.setId(btn1);
    btnSminus.setText("<");
    btnSminus.setTextSize(20);

    Lparams= new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);

    Lparams.addRule(RelativeLayout.RIGHT_OF, txtS.getId());


    btnSminus.setLayoutParams(Lparams);
            rl.addView(btnSminus);

問題は、Lparams.addRule(RelativeLayout.RIGHT_OF, txtS.getId()); という行が表示されると、View ボタンが画面から消えるように見えることです。実行されます。その理由は何ですか?

ここに画像の説明を入力

4

1 に答える 1

2

私の推測では、幅を に設定したtxtSためmatch_parent、ボタンが画面から押し出されたことが原因だと思います。に変更することで修正できますwrap_content

于 2012-12-25T17:58:02.130 に答える