2016-09-27 24 views
-1

Ich bin eine Ansicht in einem Linearlayout hinzufügen, auf diese Weise:dynamisch hinzugefügt TextInputLayout nicht in Linearlayout dargestellt

LinearLayout ll=(LinearLayout)findViewById(R.id.linearlayout); 
TextInputLayout til=new TextInputLayout(MainActivity.this); 
til.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.WRAP_CONTENT)); 
Log.i("TAG","BEFORE: "+ll.getChildCount()); 
ll.addView(til); 
Log.i("TAG","AFTER: "+ll.getChildCount()); 

Auf diese Weise, die bis Objekt nicht angezeigt wird, aber es ist hinzugefügt, weil in der zweiten log Ich sehe, dass die Nummer um eins erhöht wurde, die Ansicht, die ich gerade hinzugefügt habe.

Warum kann ich es nicht sehen? Wie zeige ich die neue Ansicht im Layout an?

Vielen Dank.

+0

Ich denke, es wird nicht angezeigt, weil Ihr 'TextInputLayout' leer ist. Versuchen Sie, 'TextInputEditText' in Ihrem' TextInputLayout' hinzuzufügen. – pike

+0

Versuchen Sie, es aufzublasen: http://StackOverflow.com/questions/31294230/textinputlayout-not-showing-when-view-added-programmatic – codemirel

Antwort

1

Ich denke, was Sie zu vergessen, ist ein EditText oder eine TextInputEditText zum TextInputLayout hinzuzufügen.

Das Android-Dokumentation sagt:

Layout [TextInputLayout a], die eine EditText (oder Nachkomme) wickelt eine Floating-Etikett zu zeigen, wenn der Hinweis auf Grund der Benutzer die Eingabe Text verborgen ist.

EditText editText = new EditText(this); 

    RelativeLayout.LayoutParams editTextParams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    editText.setLayoutParams(editTextParams); 

    editText.setTextSize(16); 
    editText.setTextColor(getResources().getColor(R.color.black)); 
    editText.setHint("hint"); 
    editText.setHintTextColor(getResources().getColor(R.color.gray)); 

    textInputLayout.addView(editText, editTextParams); 
+0

Das war der Fehler. Vielen Dank. – Fustigador

0

Die til hat keine Höhe. Verwenden Sie stattdessen:

til.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

+0

So ist es, wie es war, bevor ich einige Änderungen vorgenommen habe, und nicht funktionieren. – Fustigador

1

TextInputLayout ist nichts ohne EditText als Kind zu haben.

Erstellen einer Layoutdatei text_input_layout.xml wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.design.widget.TextInputLayout> 

nun hinzufügen, aufblasen einfach dieses Layout und addView() zu LinearLayout wie folgt:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearlayout); 
TextInputLayout textInputLayout = (TextInputLayout) LayoutInflator.from(this).inflate(R.layout.text_input_layout, null); 
linearLayout.addView(textInputLayout); 

Hope this helps ...

Hinweis: Sie können auch TextInputEditText als Kind vonhaben

Verwandte Themen