2013-12-14 5 views
1

여러 테마를 지원하고 싶은 Android 애플리케이션을 개발 중입니다. 각 테마의 색상 조합이 다릅니다. 최소 코딩으로 어떻게 구현할 수 있습니까?앱에서 여러 테마를 효율적으로 구현하는 방법은 무엇입니까?

selector의 도움으로 구현할 수있는 방법이 있습니까?

예 : 예를 들어 액티비티 중 하나가 동적 항목 목록을 표시한다고 가정 해보십시오. 따라서 각 목록 항목에 개별적으로 테마를 언급하는 대신에 백그라운드에서 목록보기 &의 목록보기에있는 테마를 언급 할 수는 없지만 모든 요소가 적절한 배경색 등을 자동으로 선택하여 한 곳에서 테마를 언급 할 수 있습니까?

희망 사항은 분명합니다.

고맙습니다.

+0

이유 : 모든 피부 특정 파일 또한

<DefineConstants>TRACE;SKIN_DEFAULT</DefineConstants> 

앱 크기를 최소화하기 위해 응용 프로그램에 포함하지 않도록 이렇게 'styles.xml'에 부모 테마를 만들지 말고, 부모 테마를 확장하고 당신이 그들에게 바라는 몇 가지 변경을하는 몇몇 자식 테마를 만드십시오. 이러한 테마는 여러 활동에서 개별적으로 사용할 수 있습니다. –

+0

사용자가 테마를 변경할 수있는 권한을 부여합니까? –

답변

0

나는 여러 개의 스킨 (테마)을 앱에 가지고있는 방법을 알아 냈습니다. 색상을 변경할 수있을뿐만 아니라이 방법으로 레이아웃을 완성 할 수 있습니다. 이 접근법에 대한 또 다른 좋은 점은 앱에 모든 스킨 (모든 파일)을 제공하지 않지만 빌드 할 때 선택한 스킨 만 제공한다는 것입니다.

이 시나리오는 앱의 사용자 정의 모양을 원하지만 기능은 동일하지만 다른 고객에게 동일한 앱이있는 경우 필요합니다.

[Activity(Label = "TEST_SKINOV", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     #if SKIN_DEFAULT 
     SetContentView(Resource.Layout.Main); 
     #endif 
     #if SKIN_BLUE 
     SetContentView(Resource.Layout.MainSkinBlue); 
     #endif 
    } 
} 

.csproj 파일을 메모장으로 편집하고 스킨 이름을 추가하십시오. "DefineConstants"에 대한 검색과 같이, 그것을 당신의 피부 이름을 추가 :

<ItemGroup Condition="$(DefineConstants.Contains('SKIN_DEFAULT'))"> 
<AndroidResource Include="Resources\layout\Main.axml"> 
    <SubType>Designer</SubType> 
</AndroidResource> 
</ItemGroup> 
관련 문제