0

我正在尝试定位 TextViews、EditTexts 和一个按钮,但是它们都一直被挤在一起。它们都被动态添加到布局中,有什么方法可以将它们分别放置在 TextView 和 EditText 下面。如果可能的话,有人能指出我正确的方向。

这是我到目前为止所得到的:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle           savedInstanceState)
{
    //putting the layout on xml page
    View view = inflater.inflate(R.layout.fragment_two, container, false);

    DisplayMetrics metrics = container.getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    int total;

    width= width/6;
    height = height/6;


    //type of layout to be used
    RelativeLayout relle = (RelativeLayout) view.findViewById(R.id.heloo);

    int prevTextViewId = 0;

    String [] array = getResources().getStringArray(R.array.income_page);

    for (String anArray : array)
    {
        final TextView textView = new TextView(getActivity());
        final EditText editText = new EditText(getActivity());
        final Button submit = new Button(getActivity());

        //setting text
        textView.setText(anArray);
        editText.setText(R.string.pound_sign);
        submit.setText(R.string.submit);

        int curTextViewId = prevTextViewId + 1;
        textView.setId(curTextViewId);

        curTextViewId += 1;

        editText.setId(curTextViewId);
        final RelativeLayout.LayoutParams params =
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
                        RelativeLayout.LayoutParams.WRAP_CONTENT);

        params.addRule(RelativeLayout.BELOW, prevTextViewId);
        textView.setLayoutParams(params);

        editText.setLayoutParams(params);
        //textView.setTextColor(R.color)

        prevTextViewId = curTextViewId;
        relle.addView(textView, params);
        relle.addView(editText, params);
        relle.addView(submit, width, height);
    }//for

    return view;
}//view oncreate

这是它出现在我的模拟器上的方式 它的出现方式

4

3 回答 3

1

还有另一种方法可以将视图与索引一起添加到您要与参数一起添加的位置

addView(View child, int index, ViewGroup.LayoutParams params)

所以你可以使用这个。:)

于 2013-07-29T10:38:36.240 回答
0

将布局的父级更改为 LinearLayout,方向设置为垂直,然后按您希望它们显示的顺序添加 TextView 和 EditText。

于 2013-07-29T12:25:48.627 回答
0

它对我有用,因此您只需检查视图的 id 并确保正确添加了布局参数。

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT);

layoutParams.addRule(RelativeLayout.BELOW, R.id.view_below_id);

viewToLayout.setLayoutParams(layoutParams );
于 2013-07-29T11:11:21.413 回答