質問

MediaControllerをカスタマイズする方法はありますか?ボタンのスタイル、SeekBarなどを変更する必要があります。

役に立ちましたか?

解決

メソッド makeControllerView 独自の見解を提供できるように、オーバーライドすることを意図していました。残念ながら、現時点では隠されています。

MediaControllerのソースを取得し、それを再実装するか、隠されたメソッドをサブクラスにコピーしてパストして、カスタマイズできる場合があります。

他のヒント

あなたができることは、あなたのメディアコントローラーのビューの階層を再開し、SeekBarの描画可能なプログラムで設定することです。

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));
        }
}

次に、電話してください

styleMediaController(myMC);

BK138の回答のコードを変更しました 色を変更するだけです 要素の。引き分け自体ではありません。このソリューションは、サポートライブラリ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);
            }
        }
    }

次に、電話してください

styleMediaController(myMC);

電話しなければなりませんでした styleMediaController(myMC) の中に OnPreparedListenerVideoView それを機能させるために。それ以外の場合、Mediacontrollerビューには子供がいません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top