2017-08-23 2 views
-5

Ich habe eine XML wie unten.Android-Komponenten programmatisch setzen

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:padding="16dp"> 

<LinearLayout 
    android:id="@+id/etMsisdn" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:id="@+id/allView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <EditText 
      android:id="@+id/msisdn" 
      android:layout_marginRight="4dp" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:backgroundTint="@color/colorPrimaryDark" 
      android:hint="MSISDN" 
      android:inputType="numberDecimal" 
      /> 
     <ImageView 
      android:layout_width="60px" 
      android:layout_height="match_parent" 
      android:src="@drawable/scan"/> 
    </LinearLayout> 
</LinearLayout> 
............ 
Another View 
............ 
</LinearLayout> 

Wie kann ich EditText und Image programmatisch in der horizontalen Linearlayout (AllView) und fügen Sie den AllView innerhalb Vertical Linearlayout (etMsisdn) hinzufügen, während das gleiche Attribut wie in XML zu halten.

Die EditText und Image r unter dem msisdn EditText sollte

The EditText and ImageView r supposed to below the msisdn edittext

Antwort

0

Sie müssen einen Verweis auf den äußersten LinearLayout (dem ersten in Ihrem Layout) zu bekommen, so dass die beste Idee ist, zu geben, es sich um eine Id:

<LinearLayout 
    android:id="@+id/myContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="16dp"> 

Dann müssen Sie den Verweis auf dieses Layout bekommen und die Kinder Ansichten hinzufügen, etwa so:

LinearLayout containerLayout = (LinearLayout)findViewById(R.id.myContainer); 
containerLayout.addView(yourView1); 
containerLayout.addView(yourView2); 

das gewünschte Layout Ausrichtung einzustellen, können Sie entweder manuell die erforderliche Set LayoutParams (siehe this answer in SO) oder Sie können ein Layout und fügen Sie es zu Ihrem aktuellen Layout anstelle von zwei Einzelansichten (EditText und ImageView) (siehe this answer in SO aufblasen).

+0

Haben diese bereits ,,, aber könnten nicht bekommen EditText und Imageview horizontal ausgerichtet – BrenDonie

+0

Das ist etwas anderes. Sie können die erforderlichen LayoutParams manuell hinzufügen (siehe [diese Antwort in SO] (https://stackoverflow.com/questions/5715612/how-to-set-setlayoutparams-for--linearlayout-elements)) oder Sie könnten a Layout (siehe [diese Antwort in SO] (https://stackoverflow.com/questions/5342121/inflate-a-view-layout-into-another-layout#5343733)). –

+0

Ich habe die Antwort mit den vorherigen Informationen aktualisiert. –

0

hier ist Ihre Lösung

LinearLayout allview=(LinearLayout)findViewById(R.id.allView); 

EditText edt=new EditText(this); 
ImageView img=new ImageView(this); 
allview.addView(edt); 
allview.addView(img); 

diese in deiner Aktivität

+0

Dadurch wird horizontal horizontal und nicht vertikal – BrenDonie

+0

der imgview und edittext hinzufügen, als Sie Parameter einstellen oder die Ausrichtung ändern können –

0

Sie haben die addView Methode auf dem Layout-Objekt zu verwenden. Wenn Sie jedoch mehr Male das gleiche "Unterlayout" im Hauptlayout hinzufügen möchten, ist es besser, ein XML-Layout mit dem "Unterteil" zu erstellen und es programmatisch hinzuzufügen. Lassen Sie mich wissen, ob Sie im zweiten Fall den Code bereitstellen müssen.

+0

Ich möchte lineares Layout (Sub) innerhalb des linearen Layouts (Haupt) hinzufügen. Aber innerhalb des linearen Unterlayouts gibt es eine andere Ansicht wie Editiertext und Bildansicht – BrenDonie

Verwandte Themen