CalendarView ne montrant pas les jours du mois

Je fais une application de calendrier et j’ai rencontré un problème étrange.
Si je ne me trompe pas, append un CalendarView à ma mise en page devrait me permettre de voir les jours du mois.
J’ai donc créé un nouveau projet dont la seule chose que j’ai faite a été de placer CalendarView sur ma présentation MainActivity.
Le problème est qu’une fois que je lance l’application, je ne peux voir que cela et il n’y a pas d’erreur.

package com.example.kanye.kalendarz22; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.widget.CalendarView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { CalendarView calendar ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.initializeCalendar(); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } public void initializeCalendar() { calendar = (CalendarView) findViewById(R.id.calendarView); calendar.setShowWeekNumber(false); calendar.setFirstDayOfWeek(2); calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int day) { Toast.makeText(MainActivity.this, day + "/" + month + "/" + year, Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } 

}

http://i.imgur.com/iJsEwCc.png?1

http://i.imgur.com/AdciraO.png?1

Code XML:

      

Des conseils sur ce qu’il faut faire pour l’afficher correctement (avec les jours du mois)? Je cherchais des permissions à append au manifeste, mais apparemment, il n’en a pas besoin. En passant, je suis tout à fait conscient du fait qu’il me faut l’API minimum niveau 11 pour utiliser cette CalendarView.

Edit: Désolé de ne pas vous donner assez d’informations, à la cause: le manque d’expérience et mon mauvais anglais me limite.

Après plus d’un an, vous avez probablement trouvé une solution ou utilisé autre chose pour résoudre le problème. Mais comme j’essayais différentes choses pour me débarrasser de cet étrange problème, j’ai réussi à découvrir ce qui se passait.

À partir de l’API 20, CalendarView a été renouvelé et ressemble à la capture d’écran de votre concepteur. C’est toujours le cas pour la plus récente API 25.

Mais pour API 19 (et inférieure je suppose), cela a l’air complètement différent:

CalendarView pour Android 4.4 (API 19)

Et aussi bête que cela puisse paraître, le problème vient de la disposition axml. Ce calendrier est absolument incapable de gérer le paramètre wrap_content pour la hauteur du calendrier. Mettre toute valeur en pixels ou en dp résoudra le problème.

Donc, ce que vous pouvez faire, c’est append ceci dans votre code pour changer la hauteur de la vue du calendrier pour les API 19 et inférieures (j’utilise Xamarin, donc c’est C # mais cela peut facilement être traduit en java):

 if (((int)Android.OS.Build.VERSION.SdkInt) <= 19) { var parameters = myCalendarView.LayoutParameters; parameters.Height = 500; //value in pixels } 

Cela a résolu le problème pour moi. Malheureusement, ce genre de chose est fréquente entre les API 19 et supérieures .. J'abandonnerais complètement le support de cette API et inférieure, mais selon les statistiques Android, il rest encore 17% des appareils en fonctionnement sur Android 4.4 .. Nous devrons nous en occuper ça je suppose.

J’ai le même problème, autant que je sache, il s’agit de la version de l’API.
La vue Conception affiche l’API version 23, tandis que votre téléphone / émulateur est plus bas, <20.
Je ne suis pas sûr si cela peut être résolu du tout.

Essayez d’utiliser plutôt DatePicker en ajoutant ces deux lignes:

 datePicker.setCalendarViewShown(true); datePicker.setSpinnerShown(false) 

Mais le plaisir ne s’arrête pas là, la fonction onDateChanged n’est pas appelée dans Android 5.0 pour datePicker … il est donc important de supprimer les deux éléments indésirables.