2015-02-01 3 views
0

У меня есть панель оценки в диалоговом окне. Я установил максимальные звезды . Приведенный ниже код отлично работает на смартфонах с небольшим размером экрана. Однако при тестировании на планшете (10 дюймов) я вижу начинается, и макет обертывает содержимое. Почему это странное поведение происходит? и как это исправить?Android Ratingbar в диалоговом окне различного размера экрана вопрос

public void ShowDialog() 
    { 
     final AlertDialog.Builder popDialog = new AlertDialog.Builder(this); 
     final RatingBar rating = new RatingBar(this); 
     rating.setMax(6); 

     popDialog.setTitle("Vote!! "); 
     popDialog.setView(rating); 

     // Button OK 
     popDialog.setPositiveButton(android.R.string.ok, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         txtView.setText(String.valueOf(rating.getProgress())); 
         dialog.dismiss(); 
        } 

       }) 

     // Button Cancel 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }); 

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

    } 

ответ

0

Из официальной документации,

Число звезд набор (через setNumStars (INT) или в макете XML) будет показано, когда ширина макета устанавливается обернуть содержимое (если другое расположение ширина установлена, результаты могут быть непредсказуемыми).

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

Layout атрибут ширина устанавливается над рейтинговым бар, позвонив по телефону setLayoutParams():

 ratingBar.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
+0

Я попытался setNumStars(), а также, это не решает проблему. Как установить ширину макета для обертывания содержимого в диалоговом окне? –

+0

см. Отредактированный ответ. – natario