我正在使用下面的代码以编程方式创建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]);
}
当前行为
想要的行为
我目前的解决方法是对第二行使用第二个linearlayout但是想知道是否有办法操纵第一个linearlayout以便不需要第二个linearlayout。
答案 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>
您可以根据需要添加任意数量的行。