2012-11-08 4 views
4

안녕하세요 거기에 오디오 파일의 총 시간과 남은 시간을 보여주는 mediacontroller에서 텍스트의 색상을 변경하는 방법입니다. 안드로이드 2.3 시간이 명확하게 볼 수 있지만 내 애플 리케이션이 안드로이드 4.0 또는 4.1에서 실행될 때 진행률 막대의 시간을 보여주는 텍스트가 너무 어둡습니다. 현재 mediacontroller 클래스를 확장하여 나 자신의 미디어 컨트롤러를 만들지는 않습니다. 아마도이 클래스에 추가 할 수있는 것이 있습니까? 도움을 주시면 감사하겠습니다.안드로이드 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; 


    } 
} 

감사

답변

13

나는 동일한 문제가있었습니다. 좋은 방법은 테마를 사용하여 색상을 변경하는 것입니다. 다음과 같이 할 수 귀하를 MediaController, 예컨대 :

private final class AudioMediaController extends MediaController { 

    private AudioMediaController(Context context) { 
     super(new ContextThemeWrapper(context, R.style.Theme_MusicPlayer)); 
    } 
} 

테마에 테마를 적용 할 ContextThemeWrapper를 사용하여 그것을 저장

<resources> 
    <style name="Theme_MusicPlayer"> 
     <item name="android:textColor">#FFFFFF</item> 
    </style> 
</resources> 

당신의 입술에 XML 파일로/폴더 값. 미디어 컨트롤러의 모든 텍스트 색 (현재 시간 & 종료 시간)은 이제 흰색입니다.

+4

이 답변은 허용되는 것보다 낫습니다! – ohcibi

+0

환상적인 답변, 진행률 표시 줄의 색상을 변경하는 방법 - 기본적으로보기 흉한 밝은 노란색으로 표시됩니다! – Jasper

4

실제로 가지 어렵다. source code of MediaController을 살펴보면 사용 된보기에 쉽게 액세스 할 수없는 내부 ID (예 : com.android.internal.R.id.time)가 있음을 알 수 있습니다.

리플렉션을 사용하여 뷰 인스턴스를 가져 와서 속성을 수정할 수 있습니다. 예를 들어 mEndTime 필드에 대한 참조를 가져 와서 텍스트 색을 변경하려고 할 수 있습니다. 예 :

try { 
    Field currentTime = getClass().getDeclaredField("mCurrentTime"); 
    currentTime.setAccessible(true); 
    TextView currentTimeTextView = (TextView) currentTime.get(this); 
    currentTimeTextView.setTextColor(Color.RED); 
} catch (Exception pokemon) { 
} 
+0

답장을 보내 주셔서 감사합니다.이 답변을 시도해 보겠습니다. – Will

관련 문제