Изменение цвета текста в android mediacontroller

Привет, есть способ изменить цвет текста в mediacontroller, показывающий общее время и оставшееся время аудиофайла. В Android 2.3 время ясно видно, но когда мое приложение запускается на Android 4.0 или 4.1, текст, показывающий времена, когда обе стороны индикатора выполнения слишком темные. В настоящее время я расширяю класс mediacontroller для создания своего собственного медиаконтроллера, который не исчезает, может быть, что-то, что я мог бы добавить к этому классу? Любая помощь приветствуется.

public class WillMediaController extends MediaController { public WillMediaController(Context context) { super(context); } @Override public void hide() { // Do Nothing to show the controller all times } @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { ((Activity) getContext()).finish(); }else{ super.dispatchKeyEvent(event); } if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { // don't show the controls for volume adjustment return super.dispatchKeyEvent(event); } return true; } } 

благодаря

У меня такая же проблема. Хороший способ – изменить цвет с помощью темы. Используйте ContextThemeWrapper для применения темы к MediaController, например:

 private final class AudioMediaController extends MediaController { private AudioMediaController(Context context) { super(new ContextThemeWrapper(context, R.style.Theme_MusicPlayer)); } } 

Ваша тема может выглядеть так:

 <resources> <style name="Theme.MusicPlayer"> <item name="android:textColor">#FFFFFF</item> </style> </resources> 

Сохраните его как XML-файл в папку res / values. Цвет каждого текста в медиа-контроллере (текущее время и время окончания) теперь белый.

На самом деле это сложно. Если вы посмотрите на исходный код MediaController , вы заметите, что используемые в нем представления имеют внутренний идентификатор (например, com.android.internal.R.id.time ), к которому вы легко получить доступ.

Хотя вы можете попытаться использовать отражение, чтобы получить экземпляры представлений, а затем изменить их атрибуты. Например, вы можете попытаться получить ссылку на поле mEndTime а затем изменить его цвет текста. например:

 try { Field currentTime = getClass().getDeclaredField("mCurrentTime"); currentTime.setAccessible(true); TextView currentTimeTextView = (TextView) currentTime.get(this); currentTimeTextView.setTextColor(Color.RED); } catch (Exception pokemon) { }