Android RatingBar показывает более 5 звезд

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

public class MainActivity extends Activity { private Button launchButton; //Rating dialog private AlertDialog.Builder rater; private RatingBar ratingBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); launchButton =(Button)findViewById(R.id.ratingButton); launchButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //Here the alert dialog will be launched showRatingDialog(); } }); //Setting up rating dialog rater = new AlertDialog.Builder(this); rater.setTitle("This is the rating dialog"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void showRatingDialog() { ratingBar = (RatingBar)findViewById(R.id.ratingStars); rater.setNegativeButton("Abbrechen", null); rater.setView(ratingBar); rater.show(); } } 

Я пробовал использовать статический макет для рейтинга, но когда я это делаю и пытаюсь отобразить панель оценки через диалоговое окно предупреждения, звезды не отображаются. Вот файл макета для бара рейтинга:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RatingBar android:id="@+id/ratingStars" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1" /> </LinearLayout> 

Solutions Collecting From Web of "Android RatingBar показывает более 5 звезд"

Постарайтесь установить максимальное значение для своего RatingBar Like Below

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/active_bg" > <RatingBar android:id="@+id/rating" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/ratingBarStyleSmall" android:numStars="5" android:stepSize="0.1" android:isIndicator="true" /> </RelativeLayout> 

Создайте файл xml в вашем файле макета и установите его как содержимое

Измените функцию showDialog следующим образом:

 LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.***your_xml_name***)); editor.setView(layout); editor.show(); 

Установка ширины RatingBar для «обертывания содержимого» решает всю проблему. Согласно документации:

Устанавливает количество отображаемых звезд. Чтобы они отображались правильно, рекомендуется, чтобы ширина макета этого виджета была обернута контентом.

Установите android: numStars = "5" и android: layout_width = "wrap_content"

Сохраните родительскую панель рейтинга как линейную раскладку и не держите в этом линейном макете ничего другого, что сработало для меня

Этот блог показывает четкую картину решения