Comment définir les marges pour les boutons dans Android Programmatically?

voix
0

J'ai ajouté Programmatically plus de 50 boutons dans un GridLayout qui contient ScrollView et LinearLayout comme GridLayout parents. Je dois définir les marges pour chaque bouton. J'ai essayé la méthode setMargins (). Mais, cela ne fonctionne pas. Est-ce que quelqu'un peut m'aider s'il vous plait?

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 pour créer des boutons.

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;
    }
Créé 19/12/2018 à 14:15
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Lorsque vous ajoutez la vue, vous devez ajouter le paramètre 2 addView(View, LayoutParameters)versions. Sinon , vous ne recevez pas les params que vous venez de , vous obtenez un nouvel objet params. , Vous devez également déplacer la création de l'objet params dans la boucle, chacun doit obtenir son propre, ou si vous changez jamais , il vous obtiendrez des résultats étranges (ils avaient tous les changements).

Bien sûr, vous devriez probablement utiliser un GridLayout ou RecyclerView avec un GridLayoutManager plutôt que d'ajouter des vues, un par un, surtout si vous avez plus d'une demi-douzaine.

Créé 19/12/2018 à 14:42
source utilisateur

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