2016-07-27 50 views
0

以下是我有:如何以編程方式將TextView和EditText對齊到水平LinearLayout?

LinearLayout horizontalLL = new LinearLayout(thisActivity); 
horizontalLL.setOrientation(LinearLayout.HORIZONTAL); 
horizontalLL.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.WRAP_CONTENT,1)); 

TextView captionTV = new TextView(thisActivity); 
captionTV.setText(element.description); 

captionTV.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.WRAP_CONTENT, LinearLayoutCompat.LayoutParams.WRAP_CONTENT)); 
editText.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.WRAP_CONTENT, LinearLayoutCompat.LayoutParams.WRAP_CONTENT,0.6f)); 

horizontalLL.addView(captionTV); 
horizontalLL.addView(editText); 

LL.addView(horizontalLL); 

,但效果不好:該EDITTEXT還很短,不填充水平線性佈局。我試圖設置captionTV的重量,但仍然沒有結果。

+2

你試過用MATCH_PARENT替代WRAP_CONTENT爲edittext? –

+0

要清楚你的問題,你想編輯文字大小增加或什麼,如果它的情況下嘗試MATCH_PARENT或給一些手動編號240dp –

回答

2

請做的修改如下

editText.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,0.6f)); 

您可以使用LinearLayout.LayoutParams.MATCH_PARENTLinearLayout.LayoutParams.WRAP_CONTENT,而不是0這裏。

如果可能,請將所有LinearLayoutCompat更換爲LinearLayout

1

嘗試下面的代碼,如果你想你的的EditText自動覆蓋剩餘空間

LinearLayout horizontalLL = new LinearLayout(this); 
     horizontalLL.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
     horizontalLL.setOrientation(LinearLayout.HORIZONTAL); 


     TextView captionTV = new TextView(this); 
     captionTV.setText("element.description"); 

     captionTV.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
     editText.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT , 1)); 

     horizontalLL.addView(captionTV); 
     horizontalLL.addView(editText); 

     LL.addView(horizontalLL); 
1

您需要使用下面的代碼:

LinearLayout ll1 = (LinearLayout)findViewById(R.id.ll1); 

     android.widget.LinearLayout horizontalLL = new android.widget.LinearLayout(this); 
     horizontalLL.setOrientation(android.widget.LinearLayout.HORIZONTAL); 
     horizontalLL.setLayoutParams(new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, 150,1f)); 

     TextView captionTV = new TextView(this); 
     captionTV.setText("Hello textview "); 
     captionTV.setTextColor(Color.BLUE); 
     captionTV.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,0.4f)); 
     horizontalLL.addView(captionTV); 

     EditText editText = new EditText(this); 
     editText.setText("Hello edittext "); 
     editText.setTextColor(Color.BLUE); 
     editText.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,0.6f)); 

     horizontalLL.addView(editText); 
     ll1.addView(horizontalLL); 

因爲XML重定義如下如下:

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:weightSum="1.0"> 
      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.40" 
       android:text="test"/> 
      <EditText 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.60" 
       android:text="test"/> 
     </LinearLayout> 
相關問題