Wie stellt man die Margen für Schaltflächen Programmatically in Android?

stimmen
0

Ich habe Programmatically mehr als 50 Tasten in einer Gridlayout hinzugefügt, die Scrollview und Linearlayout als Grid Eltern enthält. Ich muss für jede Taste, um die Margen. Ich versuchte setMargins () Methode. Aber es funktioniert nicht. Kann mir jemand bitte helfen?

XML

<LinearLayout
        android:layout_width=match_parent
        android:layout_height=match_parent
        android:orientation=vertical
        android:padding=10dp
        android:layout_marginBottom=10dp>

        <ScrollView
            android:layout_width=match_parent
            android:layout_height=match_parent
            android:scrollbars=none>

            <GridLayout
                android:id=@+id/levelsGridLayout
                android:layout_width=match_parent
                android:layout_height=match_parent
                android:columnCount=5
                android:rowCount=10>


            </GridLayout>

        </ScrollView>

    </LinearLayout>

Code Buttons zu erstellen.

FrameLayout.LayoutParams params = FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.WRAP_CONTENT,
            FrameLayout.LayoutParams.WRAP_CONTENT
    );
    for (int i = 1; i <= 100; i++) {
        Button button = new Button(this);
        button.setText(Integer.toString(i));
        id = getResources().getIdentifier(button + i, id, getPackageName());
        button.setId(id);
        button.setTag(Integer.toString(i));
        button.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        button.setTextColor(Color.WHITE);
        button.setBackgroundResource(R.drawable.levels_button_background);
        params.setMargins(5, 5, 5, 5);
        button.setLayoutParams(params);
        allLevelButtons.add(button);
        levelsGridLayout.addView(button);
        button.getLayoutParams().width = oneButtonWidth;
    }
Veröffentlicht am 19/12/2018 um 14:15
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Wenn Sie die Ansicht hinzufügen können , müssen Sie es mit dem 2 Parameter hinzuzufügen addView(View, LayoutParameters)Version. Ansonsten erhalten Sie nicht die params Sie gerade eingestellt haben , erhalten Sie ein neues params Objekt. Außerdem müssen Sie die Erstellung des params Objekt innerhalb der Schleife bewegen, sollte jeder seine eigene, oder wenn Sie es jemals ändern werden Sie seltsame Ergebnisse erhalten (sie würden alle ändern).

Natürlich sollte man wohl eher ein Gridlayout oder RecyclerView mit einem GridLayoutManager verwenden als Ansichten eines nach dem anderen hinzufügen, vor allem wenn Sie ein Dutzend oder so mehr als die Hälfte haben.

Beantwortet am 19/12/2018 um 14:42
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more