Hay una manera de personalizar el MediaController? Necesito cambiar el estilo de los botones, SeekBar etc.

InformationsquelleAutor duessi | 2010-01-11

3 Comentarios

  1. 3

    El método makeControllerView estaba destinado a ser reemplazado por lo que podría proporcionar a su propio punto de vista. Por desgracia, está oculto en el momento.

    Es posible que desee tomar la fuente de MediaController y cualquiera de reimplementar o copiar-y-pegar los métodos ocultos en una subclase de modo que usted puede personalizar.

    • makeControllerView es protected para la fuente que estoy mirando. ¿Alguien sabe cuando cambió de private a protected?
    • Oh, tal vez usted está hablando acerca de la @ocultar en el javadoc de la makeControllerView en android.widget.MediaController. Mientras que este javadoc poco aparece para detener el @Override anotación de trabajo, no no en realidad prevenir reemplazar el método. Pregunta Original se sitúa prácticamente sin cambios – esto era privado?
  2. 7

    Lo que puedes hacer es recurse el punto de vista de la jerarquía de su MediaController y establecer el SeekBar del dibujable programación:

    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));
            }
    }

    A continuación, sólo tiene que llamar

    • El código no me funciona. ¿Cuál es la razón por la paremeter index? v.getChildCount() devuelve 0 cada vez.
    • El índice de parámetro es necesario debido a que la función se llama recursivamente por sí mismo, descendiendo el punto de vista de la jerarquía de la MediaController vista.
    • Pero la variable index no se utiliza nunca.
    • Es, ver la línea 5 y 11 del código de arriba 😉
    • Sí se establece en dos ocasiones, pero nunca de leerlo^^
    • Que tiene algún punto de la misma 😉 Editado el post para quitar lo superfluo argumento, gracias!
    • Tenía que llamar a styleMediaController(myMC) en el OnPreparedListener de la VideoView para hacer que funcione. De lo contrario, la MediaController vista no tiene hijos.
    • Que realmente es una pésima solución en términos de casi todo (legibilidad, estabilidad, etc.). Sin embargo, parece que el marco que nos ha dejado otra opción. Gracias por compartir

  3. 3

    He cambiado el código de bk138 la respuesta de con sólo cambiar el color de los elementos. No la dibujables sí mismos. Esta solución es compatible con dispositivos antiguos en combinación con el apoyo de la biblioteca v4.

    A continuación, sólo tiene que llamar

    Tuvo que llamar a styleMediaController(myMC) en el OnPreparedListener de la VideoView para hacer que funcione. De lo contrario, la MediaController vista no tiene hijos.

    • ¿qué es setCompatTint?

Dejar respuesta

Please enter your comment!
Please enter your name here