2016-07-27 35 views
0

我使用下面的代碼以編程方式創建textviews。我的問題是,他們都擠在一起,而我希望當邊緣到達時,他們立即去下一行。如何在達到邊緣時在新行中放置edittext

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中,但不知道是否有辦法操作第一個線性佈局,以便不需要第二個線性佈局。

回答

0

測量你的屏幕寬度,並用邊距等測量你的編輯文本寬度。你可以計算是否有足夠的空間用於新的編輯文本。 當到達邊緣時,我會添加一個新的線性佈局。

在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> 

,只要你想你可以添加儘可能多的行。

+0

是的。我現在有這個作爲我的解決方法,但想知道是否有其他方式來做到這一點。雖然謝謝! – user6388032

+0

也許是一個帶編輯文本的GridView。 – kkkkk