панель рейтинга в моем диалоговом окне выходит за пределы
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() не влияет
Сначала укажите высоту и ширину:
LinearLayout linearLayout = new LinearLayout(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
linearLayout.addView(rb);
Устанавливает количество отображаемых звездочек, применяя setNumStars(x). Чтобы они отображались правильно, рекомендуется, чтобы ширина макета этого виджета была оберткой содержимого. Нравиться:
rb.setNumStars(6);
Вы можете установить свою ширину для себя следующим образом:
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.setMax(6);
И Заменять это с
rb.setNumStars(6);
Надеюсь, IV дал вам решение :)
Если вы добавите RatingBar непосредственно в AlertDialog, это вызовет связанный вывод, поскольку мы генерируем Ratingbar динамически, а не задаем ширину.
Вы можете добиться того же, установив LayoutParams на свой RatingBar и добавив свой RatingBar в LinearLayout и добавив этот вид LinearLayout в AlertDialog.
Проверьте ниже образец:
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();
Выход:
Спасибо за оценку и принятие в качестве ответа. Не могли бы вы проголосовать, чтобы другие люди могли использовать то же решение.
rb не имеет параметра ширины