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>

res/values フォルダーに XML ファイルとして保存します。メディア コントローラー (現在の時間と終了時間) のすべてのテキストの色が白になりました。

于 2013-01-29T12:22:29.513 に答える
4

実はちょっと難しい。のソース コードをMediaController見ると、使用されているビューに、com.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 に答える