2016-08-19 2 views
1

마쉬멜로우 소스 코드를 기반으로 설정 응용 프로그램을 사용자 정의하고 있습니다. 예 : 작업 표시 줄, 상태 표시 줄, EditTextView, 대화 상자 단추 등의 색입니다. 소재 디자인의 가이드를 읽은 후에, 색의 변경을 알고있어 주름이 나를 만날 수 있습니다. 그래서 나는 다음과 같이 수행설정 응용 프로그램에서 사용자 정의 colorAccent를 사용할 수 없습니다.

<style name="Theme.SettingsBase" parent="@android:style/Theme.Material.Settings" /> 
<style name="Theme.Settings" parent="Theme.SettingsBase"> 
    <item name="android:colorAccent">@color/red</item> 
</style> 

불행하게도, 그것은 작동하지 않을 수 있습니다, 그들의 색깔은 여전히 ​​깊은 청록색이다.

소스 코드 : 당신이 스타일을 소유 적용한 후 첫번째 테마 재정의 작업이있는 경우 http://androidxref.com/6.0.0_r1/xref/packages/apps/Settings/res/values/themes.xml

+0

'@color/red'의 값은 무엇입니까? –

+0

# F00 user6548319

+0

곧 살펴 보겠습니다. –

답변

0

특히 applyStyle/그림 참고의 전화 확인하시기 바랍니다.

// PhoneWindow.java 
protected ViewGroup generateLayout(DecorView decor) { 
    // Non-floating windows on high end devices must put up decor beneath the system bars and 
    // therefore must know about visibility changes of those. 
    if (!mIsFloating && ActivityManager.isHighEndGfx()) { // Shield off this flag if isFloating or lowEndGfx 
     if (!targetPreL && a.getBoolean(
       R.styleable.Window_windowDrawsSystemBarBackgrounds, 
       false)) { 
      setFlags(FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, 
        FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS & ~getForcedWindowFlags()); 
     } 
    } 
    ... 
} 


private WindowInsets updateColorViews(WindowInsets insets, boolean animate) { 

    if (!mIsFloating && ActivityManager.isHighEndGfx()) { 

     ... 
    } 

    ... 
} 

// ActivityManager.java 
static public boolean isHighEndGfx() { 
     return !isLowRamDeviceStatic() && 
       !Resources.getSystem().getBoolean(com.android.internal.R.bool.config_avoidGfxAccel); 
    } 

    /** @hide */ 
public static boolean isLowRamDeviceStatic() { 
    return "true".equals(SystemProperties.get("ro.config.low_ram", "false")); 
} 

난 그냥 소유주를 확인하지 않는 PhoneWindow의 정책을 변경 :

colorPrimaryDark는 PhoneWindow.java 및 ActivityManager.java에서 다음 코드가 있기 때문에 Theme.Settings가 windowDrawsSystemBarBackgrounds를 설정했지만 작동하지 않을 수 있습니다. config.low_ram 속성을 사용하여 신속하게 내 기대치를 달성하십시오.