不显示FOR循环的按钮

时间:2015-07-01 15:29:50

标签: android android-layout android-button

我一直在尝试以编程方式根据值列表添加按钮。

问题:只生成一个按钮,而不是一个系列。此按钮包含数组中最后一个值的信息。

我收集了一个名为'values'的值数组,然后使用for循环添加按钮。

以下是添加按钮的循环代码:

    public void updateButtons(List<String> values, View rootView) {

    //Find relative layout
    RelativeLayout rl = (RelativeLayout) rootView.findViewById(R.id.RelativeLayoutManage);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);

    params.setMargins(50, 10, 50, 10);

    for (String mTrip : values) {

        //New button
        Button Postbtn = new Button(mContext);

        //Style
        Postbtn.setBackgroundResource(R.drawable.buttonshape);
        Postbtn.setTextColor(getResources().getColor(R.color.DarkGreen));
        Postbtn.setTextSize(25);

        //set text
        Postbtn.setText(mTrip.toString());

        //set id
        Postbtn.setId(i);
        int id_ = Postbtn.getId();

        //Add to view
        rl.addView(Postbtn, params);
        Postbtn = ((Button) rootView.findViewById(id_));

        //Add listener
        Postbtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {

                Log.v("TripNumber", Integer.toString(i));
                //TODO: Change Fragment
            }
        });
        i++;
    }
    }

如果需要我的相应布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayoutManage"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

似乎它们可能互相重叠。您需要使用LinearLayout

<LinearLayout android:id="@+id/RelativeLayoutManage"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    />

答案 1 :(得分:0)

您要将Button添加到RelativeLayout。在您当前的代码中,所有按钮都存在,但一个在另一个上面。您应该在其他下方/上方创建一个以使所有按钮可见。否则使用LinearLayout

答案 2 :(得分:0)

我通过在添加到布局时定位每个按钮来解决问题。只需使用:

params.addRule(RelativeLayout.BELOW, Postbtn.getId() - 1);
Postbtn.setLayoutParams(params);