更改android MediaController的样式

due*_*ssi 9 android android-widget

有没有办法自定义MediaController?我需要改变按钮的样式,SeekBar等.

bk1*_*138 7

你可以做的是递归MediaController的视图层次结构并以编程方式设置SeekBar的drawable:

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));
        }
}
Run Code Online (Sandbox Code Playgroud)

然后,打电话

styleMediaController(myMC);
Run Code Online (Sandbox Code Playgroud)

  • 不得不在`VideoView`的`OnPreparedListener`中调用`styleMediaController(myMC)`来使它工作.否则MediaController视图没有子项. (2认同)

Jam*_*mes 3

该方法makeControllerView旨在被重写,以便您可以提供自己的视图。不幸的是,它目前是隐藏的。

您可能想要获取 MediaController 的源代码并重新实现它,或者将隐藏的方法复制并粘贴到子类中,以便您可以自定义它。