Рейтинг Android выходит за пределы диалога - PullRequest
3 голосов
/ 16 апреля 2019

полоса рейтинга внутри моего диалогового окна выходит за границы enter image description here

 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() не действует

Ответы [ 4 ]

0 голосов
/ 16 апреля 2019

Если вы добавите 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();

Выход:

enter image description here

0 голосов
/ 16 апреля 2019

Вы можете установить ширину себе так:

 rb.getLayoutParams().width = WindowManager.LayoutParams.MATCH_PARENT; 
// you can also use WRAP_CONTENT but I think that for your dialog MATCH_PARENT is better
0 голосов
/ 16 апреля 2019

setMax () метод определяет максимальное количество пусков, которое может выбрать пользователь.

В соответствии с вашим запросом, я надеюсь, вы ищете установить количество звезд, которые будут отображаться.

так в вашем коде Удалить

rb.setMax(6);

И Заменить на

rb.setNumStars(6);

Надеюсь, что iv дал вам решение:)

0 голосов
/ 16 апреля 2019

Сначала укажите высоту и ширину:

 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...