C'è un modo per personalizzare il MediaController? Devo cambiare lo stile dei pulsanti, SeekBar ecc.Cambia stile di Android MediaController
risposta
Il metodo makeControllerView
doveva essere sovrascritto in modo da poter fornire la propria vista. Sfortunatamente, è nascosto al momento.
È possibile prendere la fonte di MediaController e reimplementarla o copiare e incollare i metodi nascosti in una sottoclasse in modo da poterla personalizzare.
'makeControllerView' è' protected' for la fonte che sto guardando. Qualcuno sa quando è cambiato da 'privato' a' protetto'? – William
Oh, forse stai parlando di @hide in javadoc per 'makeControllerView' in 'android.widget.MediaController'. Mentre questo bit javadoc sembra fermare l'annotazione '@ Override' dal lavoro, * non * impedisce effettivamente l'override del metodo. La domanda originale è rimasta pressoché invariata - era mai stata privata? – William
Che cosa si può fare è recurse la vista della gerarchia della vostra MediaController e impostare disegnabile del SeekBar di programmazione:
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));
}
}
Poi, basta chiamare
styleMediaController(myMC);
Il tuo codice non funziona per me. Qual è la ragione per l'indice 'di paremeter'? 'v.getChildCount()' restituisce 0 ogni volta. – rekire
@rekire Il parametro index è necessario perché la funzione viene chiamata in modo ricorsivo da sola, discendendo la gerarchia della vista di MediaController. – bk138
Ma la variabile 'index' non viene mai usata. – rekire
ho cambiato il codice di bk138 di rispondere a basta cambiare il colore degli elementi. Non i drawable stessi. Questa soluzione è compatibile con i vecchi dispositivi insieme alla libreria di supporto 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);
}
}
}
Poi, basta chiamare
styleMediaController(myMC);
dovuto chiamare styleMediaController(myMC)
nel OnPreparedListener
del VideoView
per farlo funzionare. Altrimenti la vista MediaController non ha figli.
cos'è 'setCompatTint'? –
- 1. Cambia MediaController posizione su rotazione
- 2. Estendere MediaController per Android
- 3. Android: che uso ha l'AnchorView di MediaController?
- 4. Cambia stile di ProgressDialog
- 5. Android 4.1 - RTSP utilizzando VideoView e MediaController
- 6. CKeditor - Cambia tabella di stile
- 7. Cambia stile EditText Android di bordo rettangolare per sottolineare
- 8. Cambia elenco Stile riferimento
- 9. Cambia stile carattere
- 10. Android: cambia colore del testo disabilitato usando Tema/Stile?
- 11. Cambia stile su ASP DropDownList
- 12. Correzione della posizione di MediaController in Scrollview
- 13. Cambia stile di pseudo elementi in angular2
- 14. Cambia stile di tema esistente (AvalonDock)
- 15. cambia stile dinamicamente di nessun elemento html
- 16. Come riposizionare MediaController?
- 17. posizione MediaController setAnchorView
- 18. Come posso visualizzare Android MediaController da layout xml?
- 19. Cambia stile UiBinder in un altro stile UiBinder Programmaticamente
- 20. mediacontroller non funziona sulla scheda nexus 7
- 21. Cambia automaticamente ListView Stile del selettore
- 22. Aggiunta di un pulsante a MediaController
- 23. Cambia colore di Android: attivatoBackgroundIndicator
- 24. Cambia dimensione di Android-Seekbar?
- 25. Cambia stile di tutte le occorrenze di una stringa
- 26. Cambia stile di stampa di output da Racket REPL
- 27. Cambia tastiera Android L tasto invio colore
- 28. android viewpager cambia adattatore
- 29. Android - MediaController di VideoView all'interno della finestra di dialogo appare dietro la finestra di dialogo
- 30. Cambia stile di codifica delle parentesi graffe in QtCreator
Ecco un esempio di personalizzazione di MediaController: http://stackoverflow.com/questions/12482203/how-to-create-custom-ui-for-android-mediacontroller/14323144#14323144 – Blago