2016-07-27 12 views
0

Hier ist, was ich habe:Wie richtet man TextView und EditText programmgesteuert horizontal auf das horizontale LinearLayout aus?

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); 

aber das Ergebnis ist schlecht: die editText noch sehr kurz und füllen nicht das horizontale lineare Layout. Ich habe versucht, das Gewicht für captionTV zu setzen, aber immer noch kein Ergebnis.

+2

haben Sie versucht mit MATCH_PARENT anstelle von WRAP_CONTENT für den Editiertext? –

+0

in Ihrer Frage klar sein, Sie möchten Textgröße zu erhöhen, oder was, wenn es der Fall versuchen MATCH_PARENT oder geben Sie eine manuelle Nummer 240dp –

Antwort

2

Bitte die Änderung wie unten

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

Sie LinearLayout.LayoutParams.MATCH_PARENT oder LinearLayout.LayoutParams.WRAP_CONTENT statt 0 hier verwenden können.

Wenn möglich, alle LinearLayoutCompat durch LinearLayout ersetzen.

1

Versuchen Sie den folgenden Code ein, wenn Sie möchten, dass Ihre EditText automatisch den verbleibenden Raum abdecken:

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

Sie müssen Code unten verwenden:

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); 

weil in XML Gewicht definieren wie unten:

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