4

嗨,有没有办法改变媒体控制器中文本的颜色,显示音频文件的总时间和剩余时间。在 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;


    }
}

谢谢

4

2 回答 2

13

我有同样的问题。一个好方法是使用主题更改颜色。使用 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 文件夹中。媒体控制器中每个文本的颜色(当前时间和结束时间)现在都是白色的。

于 2013-01-29T12:22:29.513 回答
4

其实有点难。如果您查看 的源代码MediaControllercom.android.internal.R.id.time,您会注意到它使用的视图有一个您无法轻松访问的内部 id(例如)。

不过,您可以尝试使用反射来获取视图实例,然后修改它们的属性。例如,您可以尝试获取对该mEndTime字段的引用,然后更改其文本颜色。例如:

try {
    Field currentTime = getClass().getDeclaredField("mCurrentTime");
    currentTime.setAccessible(true);
    TextView currentTimeTextView = (TextView) currentTime.get(this);
    currentTimeTextView.setTextColor(Color.RED);
} catch (Exception pokemon) {
}
于 2012-11-08T00:52:56.983 回答