嗨有没有办法改变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;
}
}
由于
答案 0 :(得分: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文件夹中。媒体控制器中每个文本的颜色(当前时间和结束时间)现在都是白色。
答案 1 :(得分:4)
实际上有点困难。如果你看一下source code of MediaController
,你会发现它使用的视图有一个内部ID(例如com.android.internal.R.id.time
),你无法轻易访问它。
但是,您可以尝试使用反射来获取视图实例,然后修改它们的属性。例如,您可以尝试获取mEndTime
字段的引用,然后更改其文本颜色。 e.g:
try {
Field currentTime = getClass().getDeclaredField("mCurrentTime");
currentTime.setAccessible(true);
TextView currentTimeTextView = (TextView) currentTime.get(this);
currentTimeTextView.setTextColor(Color.RED);
} catch (Exception pokemon) {
}