la barre de notation dans ma boîte de dialogue sort des limites
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
4 Réponses :
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);
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
rb n'a pas de paramètre de largeur
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 :)
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:
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.