Gibt es eine Möglichkeit, den MediaController anzupassen? Ich muss den Stil von Knöpfen, SeekBar usw. ändern.Ändern Sie den Stil von Android MediaController
Antwort
Die Methode makeControllerView
sollte überschrieben werden, also konnten Sie Ihre eigene Ansicht liefern. Leider ist es im Moment versteckt.
Sie können die Quelle von MediaController nehmen und diese entweder neu implementieren oder die versteckten Methoden kopieren und in eine Unterklasse einfügen, um sie anzupassen.
'makeControllerView' ist" geschützt "für die Quelle, die ich sehe. Weiß jemand, wann es sich von "privat" zu "geschützt" geändert hat? – William
Oh, vielleicht sprechen Sie über die @Hide im Javadoc für die 'makeControllerView' in' android.widget.MediaController'. Obwohl dieses javadoc-Bit scheinbar die '@ Override'-Annotation von der Arbeit abhebt, verhindert es * tatsächlich * nicht, die Methode zu überschreiben. Die ursprüngliche Frage steht fast unverändert - war das jemals privat? – William
Was können Sie tun, ist die Ansicht Hierarchie Ihrer MediaController- Rekursion und die SeekBar des ziehbar gesetzt programmatisch:
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));
}
}
Dann rufen Sie einfach
styleMediaController(myMC);
Ihr Code funktioniert nicht für mich. Was ist der Grund für den "Index"? 'v.getChildCount()' gibt jedes Mal 0 zurück. – rekire
@rekire Der Parameter index wird benötigt, weil die Funktion rekursiv aufgerufen wird und die Ansichtshierarchie der MediaController-Ansicht absteigt. – bk138
Aber die Variable "index" wird nie verwendet. – rekire
ich den Code von bk138 s geändert beantworten zu Ändern Sie einfach die Farbe der Elemente. Nicht die Zeichen selbst. Diese Lösung ist kompatibel zu alten Geräten in Verbindung mit der Support-Bibliothek 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);
}
}
}
Dann rufen Sie einfach
styleMediaController(myMC);
styleMediaController(myMC)
im OnPreparedListener
des VideoView
zu nennen Wäre es funktioniert. Ansonsten hat die MediaController-Ansicht keine Kinder.
Was ist 'setCompatTint'? –
- 1. Ändern Sie den Stil von jqGrid
- 2. Ändern Sie den Stil dynamisch.
- 3. Android Show MediaController
- 4. MediaController immer auf Android
- 5. Ändern Sie den Stil auf ASP DropDownlist
- 6. Android SimpleAdapter ändern Element-Stil
- 7. Spinner Stil in Android ändern
- 8. Eclipse-: Ändern Sie den Bausteinkommentar Stil von Strg + Shift +/
- 9. Ändern Sie den Stil von "Zahlen mit Karte" Stripe-Taste
- 10. Ändern Sie den Stil dynamisch von keinem HTML-Element
- 11. Ändern Sie den Stil der Standard Android.R.layout Optionen?
- 12. Wie kann ich den Stil des Spinner ändern? android
- 13. Ändern Sie die Hintergrundfarbe von ListView Item, behalten Sie den Standard-Selektor-Stil bei?
- 14. ändern Sie den Stil der Eingabe Platzhalter mit Java-Skript
- 15. Ändern Sie den Stil des vorhandenen Designs (AvalonDock)
- 16. CSS3: So ändern Sie den Stil nur nach manuellem Zeilenumbruch
- 17. Stil ändern android EditText aus rechteckigen Rahmen
- 18. Android ändern Google Maps Zoom Tasten Stil
- 19. benutzerdefinierte Schaltfläche: Stil ändern, wenn sie gedrückt
- 20. Ändern Sie den Stil mit "SelectAll" und "Select" Probleme
- 21. So ändern Sie den ComboBox-Stil der Zelle in DataGridViewComboBoxColumn
- 22. Wie ändern Sie den Stil der Zelle in einer JQuery.DataTable?
- 23. Wie ändern Sie den Stil eines div programmgesteuert
- 24. Wie ändern Sie den Stil des Titel-Tags in CSS?
- 25. Android - MediaController von VideoView in Dialog erscheint hinter dem Dialog
- 26. Position MediaController in einem Fragment
- 27. (Kontext, Token) beim Instanziieren von MediaController
- 28. MediaController mit MediaPlayer
- 29. Android So ändern Sie den Anwendungstitel
- 30. Android - Ändern Sie den Wert in strings.xml
Hier ist ein Beispiel MediaController Anpassung: http://stackoverflow.com/questions/12482203/how-to-create-custom-ui-for-android-mediacontroller/14323144#14323144 – Blago