J'essaye de créer une barre de notation par programmation.Barre de notation android par programmation ne dessine pas correctement
Si j'utilise tout XML fonctionne parfaitement
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/derp">
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:layout_centerHorizontal="true"
/>
Et le résultat est un bar de notation normale, parfaitement fonctionnelle avec des étoiles rouges (ma couleur d'accent).
Mais si j'essaie de faire ce programme avec ceci:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout l = new LinearLayout(getApplicationContext());
l.setOrientation(LinearLayout.VERTICAL);
l.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
RatingBar ratingBar = new RatingBar(getApplicationContext());
ratingBar.setMax(5);
ratingBar.setStepSize(1);
ratingBar.setNumStars(0);
l.addView(ratingBar);
((RelativeLayout)findViewById(R.id.derp)).addView(l);
}
Le résultat est complètement différent. L'arrière-plan de l'étoile non sélectionnée est invisible, donc il ressemble à ceci.
La barre d'évaluation est là, si vous commencez à interagir avec elle affiche correctement en tant que tels
et dès que je retire mon doigt, il revient à un désélectionné invisible étoile, mais l'étoile que j'ai sélectionnée reste correctement mise en évidence.
La couleur des étoiles est également différente de celle des couleurs xml. Le constructeur de contexte de barre d'évaluation utilise cependant ce qui semble être le style par défaut. Cela a commencé à se produire tout à coup dans mon application principale et je ne peux pas vraiment comprendre pourquoi. J'ai essayé de créer une application de test vide et le problème persiste.
Est-ce que quelqu'un sait quelle pourrait être la cause?