Changez le style de MediaController Android

Existe-t-il un moyen de personnaliser MediaController? Je dois changer le style des boutons, SeekBar etc.

  • Un moyen approprié de donner des données initiales aux fragments?
  • Impossible d'ouvrir Android SDK Manager
  • Les problèmes de Paint.setShadowLayer () vs Canvas.drawbitmap () Android
  • L'application redémarre complètement lorsqu'elle est lancée par l'icône appuyez sur le lanceur
  • La variable est accessible dans la classe interne. Doit être déclaré final
  • Android - EditText donne IndexOutOfBounds Exception lors de l'utilisation de TextAllCaps
  • Comment détecter par programme le profil d'énergie du périphérique SONY - Stamina est activé
  • Référence des fragments à l'intérieur de ViewPager
  • L'émulateur de studio Visual Studio ne démarre pas complètement
  • String to charsequence
  • Quelques avantages de la programmation en mode natif pour le développement mobile?
  • Comment faire des migrations de schéma de base de données dans Android?
  • 3 Solutions collect form web for “Changez le style de MediaController Android”

    La méthode makeControllerView devait être remplacée afin que vous puissiez fournir votre propre vue. Malheureusement, il est caché en ce moment.

    Vous voudrez peut-être prendre la source de MediaController et ré-exécuter ou copier-et-coller les méthodes cachées dans une sous-classe afin que vous puissiez le personnaliser.

    Ce que vous pouvez faire, c'est de récupérer la hiérarchie de vue de votre MediaController et de définir le SeekBar de manière programmable par programme:

     private void styleMediaController(View view) { if (view instanceof MediaController) { MediaController v = (MediaController) view; for(int i = 0; i < v.getChildCount(); i++) { styleMediaController(v.getChildAt(i)); } } else if (view instanceof LinearLayout) { LinearLayout ll = (LinearLayout) view; for(int i = 0; i < ll.getChildCount(); i++) { styleMediaController(ll.getChildAt(i)); } } else if (view instanceof SeekBar) { ((SeekBar) view).setProgressDrawable(getResources().getDrawable(R.drawable.progressbar)); ((SeekBar) view).setThumb(getResources().getDrawable(R.drawable.progresshandle)); } } 

    Ensuite, appelez simplement

     styleMediaController(myMC); 

    J'ai changé le code de la réponse de bk138 pour simplement changer la couleur des éléments. Pas les drawables eux-mêmes. Cette solution est compatible avec les anciens périphériques avec la bibliothèque de support v4.

     private void styleMediaController(View view) { if (view instanceof MediaController) { MediaController v = (MediaController) view; for (int i = 0; i < v.getChildCount(); i++) { styleMediaController(v.getChildAt(i)); } } else if (view instanceof LinearLayout) { LinearLayout ll = (LinearLayout) view; for (int i = 0; i < ll.getChildCount(); i++) { styleMediaController(ll.getChildAt(i)); } } else if (view instanceof SeekBar) { ((SeekBar) view) .getProgressDrawable() .mutate() .setColorFilter( getResources().getColor( R.color.MediaPlayerMeterColor), PorterDuff.Mode.SRC_IN); Drawable thumb = ((SeekBar) view).getThumb().mutate(); if (thumb instanceof android.support.v4.graphics.drawable.DrawableWrapper) { //compat mode, requires support library v4 ((android.support.v4.graphics.drawable.DrawableWrapper) thumb).setCompatTint(getResources() .getColor(R.color.MediaPlayerThumbColor)); } else { //lollipop devices thumb.setColorFilter( getResources().getColor(R.color.MediaPlayerThumbColor), PorterDuff.Mode.SRC_IN); } } } 

    Ensuite, appelez simplement

     styleMediaController(myMC); 

    Il styleMediaController(myMC) appeler styleMediaController(myMC) dans OnPreparedListener de VideoView pour le faire fonctionner. Sinon, la vue MediaController n'a pas d'enfants.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.