1

내 Android 애플리케이션에 스타일 파일에 다음 선언이 포함 된 기본 프로젝트 모듈이 있습니다. 이 테마는 "application"요소의 모든 구성 요소에 동일한 테마가 적용되도록 "application"태그의 Manifest 파일에 사용됩니다.Android 스타일 속성 및 속성을 해결 하시겠습니까?

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:colorPrimary" tools:ignore="NewApi"> 
     @color/light_black 
    </item> 
    <item name="colorPrimary">@color/light_black</item> 
    <item name="android:colorAccent" tools:ignore="NewApi">@color/sapphire</item> 
    <item name="colorAccent">@color/sapphire</item> 
    <item name="android:colorBackground">@color/primary_background</item> 
    <item name="android:textColorPrimary">@color/title_color</item> 
    <item name="android:colorButtonNormal" tools:ignore="NewApi">@color/sapphire</item> 
    <item name="colorButtonNormal">@color/sapphire</item> 
    <item name="android:colorForeground" tools:ignore="NewApi"> 
     @color/title_color 
    </item> 
    <item name="android:titleTextStyle">@style/toolbar_title</item> 
    <item name="android:navigationIcon" tools:ignore="NewApi"> 
     ?android:attr/homeAsUpIndicator</item> 
    <item name="navigationIcon">?android:attr/homeAsUpIndicator</item> 
    <item name="android:colorControlNormal" tools:ignore="NewApi">@android:color/white</item> 
    <item name="colorControlNormal">@android:color/white</item> 
</style> 

는 또한 라이브러리 모듈이 내가 내에서 가장 일반적으로 사용되는 뷰, 위젯 내 응용 프로그램 프로젝트 내에서 다른 응용 프로그램과 재사용 할 수있는 기초 구성 요소 또는 다른 사람을 넣어 될 주요 프로젝트 모듈, 옆에 조직. Gradle Dependency 선언의 경우 프로젝트 모듈은 라이브러리 모듈에 따라 다르며 그 반대는 아닙니다.

기본 프로젝트 모듈의 해당 컨텍스트 (활동 인스턴스) 테마에 따라 런타임시 내 라이브러리 모듈 구성 요소 코드 기반 내에서 "colorAccent"및 "colorControlNormal"기본 android-attributes를 어떻게 해결합니까?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"> 
<item android:color="?android:attr/colorControlNormal" 
    android:state_activated="false" 
    tools:ignore="NewApi"/> 

<item android:color="?android:attr/colorAccent" 
    android:state_activated="true" 
    tools:ignore="NewApi"/> 
</selector> 

답변

0

여기 어떻게 수정 했나요?

라이브러리 모듈의 attrs.xml. 속성은 아마도 색상이지만 형식은 "정수"입니다. 주요 프로젝트 모듈 라이브러리 모듈에 의존하기 때문에

<attr name="progressColorControlNormal" format="reference|integer" /> 
<attr name="progressColorAccent" format="reference|integer" /> 

, 나는 styles.xml 파일에 테마 정의에 이러한 속성에 액세스 할 수 있습니다. 와 "안드로이드? : ATTR/colorAccent", 또는 변형 :

<item name="progressColorControlNormal">@android:color/white</item> 
<item name="progressColorAccent">@color/sapphire</item> 

자체는? "ATTR/colorControlNormal 안드로이드"로 테마에서 참조를 색상의 해결 값을 통지하고,하지 마십시오.

이제 라이브러리 모듈의 드로어 블 XML이 테마 색을 자동으로 해결합니다.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"> 
    <item android:color="?progressColorControlNormal" 
     android:state_activated="false" 
     tools:ignore="NewApi"/> 

    <item android:color="?progressColorAccent" 
     android:state_activated="true" 
     tools:ignore="NewApi"/> 
</selector>