如何在到达边缘时将edittext放在新行中

时间:2016-07-27 17:59:11

标签: android layout android-edittext

我正在使用下面的代码以编程方式创建textview。我的问题是它们都被挤在一条线上,而我希望当达到边缘时,它们会立即进入下一条线。

 LinearLayout ll = (LinearLayout) view.findViewById(R.id.linearlayout_answerboxes);

        final EditText[] answerboxes = new EditText[answerSplit.size()];
        final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(125, LinearLayout.LayoutParams.WRAP_CONTENT);
        for (int i = 0; i<answerSplit.size(); i++) {
            answerboxes[i] = new EditText(getActivity());
            answerboxes[i].setLayoutParams(lparams);
            answerboxes[i].setGravity(Gravity.CENTER);
            ll.addView(answerboxes[i]);
        }

当前行为

current behavior

想要的行为

wanted behavior

我目前的解决方法是对第二行使用第二个linearlayout但是想知道是否有办法操纵第一个linearlayout以便不需要第二个linearlayout。

1 个答案:

答案 0 :(得分:0)

测量屏幕的宽度并使用边距等测量编辑文本宽度。您可以计算是否有足够的空间用于新的edittext。 当到达边缘时,我会添加一个新的线性布局。

在xml中它看起来像这样:

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <!--Your edit texts from first row-->

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <!--Your edit texts from second row-->

    </LinearLayout>


    .....

</LinearLayout>

您可以根据需要添加任意数量的行。