2016-09-15 7 views
0

Ich habe eine multiple dimens.xml-Dateien für alle "kleinste Breite", die ich für die Schaltfläche Größe verwenden. Und ich habe auch mehrere Versionen für das Hauptlayout und für das Tastenlayout (für Multi-Screen-Unterstützung).Hinzufügen von Button zu LinearLayout programmatisch funktioniert nicht richtig

Ich möchte programmgesteuert mehrere Schaltflächen in Layout einfügen und diese Schaltfläche mit Layout aus XML aufblasen.

Dies ist, wie ich dies tun:

Button temp_button = null; 
    final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    for(int i = 0; i < 7; i++) { 
     temp_button = (Button)inflater.inflate(R.layout.answer_letter_button, null); 
     temp_button.setTextColor(accent_color); 

     answer_letters.add(temp_button); 

     answer_panel.addView(answer_letters.get(i)); 
} 

Dies ist eine übergeordnete Layout für diese Schaltflächen:

<LinearLayout 
     android:id="@+id/answer_panel" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center" 
     app:layout_constraintBottom_toTopOf="@+id/letter_panel"> 
</LinearLayout> 

Und Tasten-Layout:

<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="@dimen/answer_letter_button_size" 
    android:layout_height="@dimen/answer_letter_button_size" 
    android:text="M" 
    android:textStyle="bold" 
    android:textColor="@color/colorAccent" 
    android:textSize="@dimen/answer_letter_button_text_size" 
    android:layout_margin="@dimen/answer_letter_button_margin_size" 
    android:background="@drawable/shaped_button" /> 

Was ich will, um zu sehen, : enter image description here

Was ich sehe eigentlich:

enter image description here

Was mache ich falsch, jemand mir sagen?

Sorry, ich falsch ausgedrückt. Ich meine, dass etwas mit der Größe der resultierenden Schaltfläche falsch ist. Meist mit einer Knopfbreite.

+0

Warum fügen Sie Ihre Schaltflächenansicht innerhalb von ** answer_letters ** zuerst und dann ** answer_panel ** hinzu? –

+0

Sie führen hier eine Schleife aus, weshalb dort die Anzahl der Schaltflächen angezeigt wird. –

Antwort

1

Sie müssen layout_weight param hinzufügen und setzen Sie ihn auf 1 auch layout_width und layout_height zu wrap_content ändern, can'y Sie 7 an und stellen Sie die Höhe und Breite von dimens hinzuzufügen. Dein Weg wird immer falsch sein und auch dazu führen. Setze nur textSize aus dimens und schaue was du suchst.

<Button 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="M" 
     android:textStyle="bold" 
     android:textColor="@color/colorAccent" 
     android:textSize="@dimen/answer_letter_button_text_size" 
     android:layout_margin="@dimen/answer_letter_button_margin_size" 
     android:background="@drawable/shaped_button" /> 

Und fügen Sie in Ihrem übergeordneten Layout, android:weightSum="7".

+0

Sorry, ich habe es falsch ausgedrückt. Ich meine, dass etwas mit der Größe der resultierenden Schaltfläche nicht stimmt. Meist mit einer Knopfbreite. –

+0

Versuchen Sie diesen Code jetzt. –

+0

Danke! Es klappt. –

Verwandte Themen