3
votes

La barre d'évaluation Android sort des limites de la boîte de dialogue

la barre de notation dans ma boîte de dialogue sort des limites entrez description de l'image ici

 final AlertDialog.Builder popDialog = new AlertDialog.Builder(ExercisesActivity.this);
 final RatingBar rb = new RatingBar(ExercisesActivity.this);
 popDialog.setIcon(android.R.drawable.btn_star_big_on);
 rb.setMax(6);
 popDialog.setTitle("Set Difficulty");
 popDialog.setView(rb);
 // Button OK
 popDialog.setPositiveButton(android.R.string.ok,
       new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int which) {
              //do things
       }

 });
 popDialog.create();
 popDialog.show();

setMax () n'a aucun effet


0 commentaires

4 Réponses :


0
votes

Spécifiez d'abord la hauteur et la largeur:

rb.setNumStars(6);

Définit le nombre d'étoiles à afficher apply setNumStars (x). Pour que ceux-ci s'affichent correctement, il est recommandé que la largeur de mise en page de ce widget soit enveloppée de contenu. Comme:

 LinearLayout linearLayout = new LinearLayout(this);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT
    );

linearLayout.addView(rb);


0 commentaires

0
votes

Vous pouvez définir votre largeur comme ceci:

 rb.getLayoutParams().width = WindowManager.LayoutParams.MATCH_PARENT; 
// you can also use WRAP_CONTENT but I think that for your dialog MATCH_PARENT is better


1 commentaires

rb n'a pas de paramètre de largeur



0
votes

La méthode setMax () définit le nombre maximum de démarrages pouvant être sélectionnés par l'utilisateur.

Selon votre requête, j'espère que vous recherchez définir le nombre d'étoiles à afficher.

donc dans votre code Remove final

rb.setNumStars(6);

Et Remplacez-le par

XXX

Hope iv vous a donné une solution :)


0 commentaires

0
votes

Si vous ajoutez RatingBar directement dans AlertDialog , cela provoquera une sortie câblée car nous générons dynamiquement Ratingbar et ne définissons pas la largeur .

Vous pouvez obtenir la même chose en définissant LayoutParams dans votre RatingBar et en ajoutant votre RatingBar dans LinearLayout et ajoutez cette vue LinearLayout au AlertDialog.

Vérifiez ci-dessous Exemple:

final AlertDialog.Builder popDialog = new AlertDialog.Builder(getActivity());
popDialog.setTitle("Set Difficulty");
popDialog.setIcon(android.R.drawable.btn_star_big_on);

LinearLayout linearLayout = new LinearLayout(ExercisesActivity.this);
LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
);

final RatingBar rating = new RatingBar(ExercisesActivity.this);
rating.setLayoutParams(lParams);
rating.setNumStars(6);
linearLayout.addView(rating);

popDialog.setView(linearLayout);

// Button OK
popDialog.setPositiveButton(android.R.string.ok,
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //do things
        }
    });
popDialog.create();
popDialog.show();

Sortie:

 entrez la description de l'image ici


1 commentaires

Merci pour l'appréciation et l'acceptation comme réponse. Pouvez-vous voter pour que d'autres personnes puissent utiliser la même solution.