2013-05-10 1 views
2

응용 프로그램에서 두 개의 테마를 만들고 내가 잘하고 있던하지만 지금은 등 CompoundButtons, Spinners, ImageButton의, 같은 위젯 완전히 다른 styles를 사용하는 방법에 대한 혼란 스러워요 .. I 각 유형에 대해 사용자 정의 Buttons을 작성하고 각각은 해당 상태에 따라 고유 한 drawable을가집니다. 내가 알아 낸 것은 있지만 두 개의 고객 중 어느 고객이 맞는지에 따라 전혀 다른 두 개의 Themes (예 : 상태를 누르면 meal_orange ImageButton을 사용하고 ImageButton 상태는 내 Theme에 대해 meal_blue를 사용함)가 필요합니다. 두 가지 별도의 앱이 없으면이 문제를 검색 했으므로 올바른 용어를 검색하거나 themes (둘 모두 가능)을 완전히 이해하지 못합니다.내가 정의 <code>styles</code>을 사용하고

내가 현재 가지고있는의 작은 예에 내 나는 사용자 지정 표시 줄을 생성하기 때문에 원래 ActionBar 부분은 무관하다

<style name="CustomActivityTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
</style> 

처럼 뭔가 사용자 정의 theme을 만들어

// these point to separate selector files to show the different states 
<style name="MealButton" parent="@android:style/Widget.ImageButton"> 
    <item name="android:background">@drawable/meal_button</item> 
</style> 

<style name="CatButton" parent="@android:style/Widget.ImageButton"> 
    <item name="android:background">@drawable/cat_button</item> 
</style> 

styles.xml 하지만 제가 할 수 있다면 여기에 ImageButton 스타일의 위의 예제를 사용하도록 지시합니다. 그러면 멋진 스타일이 될 것입니다.

나는 이것을 올바르게 설명하기를 바랍니다. 가능하면 누군가 말해 줄 수 있습니까? 두 가지 버전의 앱이 필요 하겠지만 어쩌면 상상할 수도 없습니다. 나는 내가 styles을 다른 themes 안에 선언 할 수 있다고 생각했지만, widgets에 대해서는 그렇게 할 수 없을 것 같습니다.

그냥 명확히하기 위해 두 번째 청크 내부에서 코드의 첫 번째 청크를 어떻게 사용할 수 있습니까? 감사!

+0

저는 정말로 혼란 스럽습니다. 상태에 따라 버튼에 대해 다른 스타일을 원하십니까? 그것이 당신의 최종 목표입니까? – Catherine

+0

나는 이미 두 개의 다른 아이콘을 가지고 있지만 두 세트는 가지고있다. 각각의 'Button'은 눌려진 아이콘과 정상을위한 아이콘을 가지고 있습니다. 하지만 두 세트가 있습니다. 하나는 A 회사 용이고 다른 하나는 B 회사 용입니다. A 회사에서 다운로드 한 경우 세트 1 버튼을 사용하고 B 회사에서 다운로드 한 경우에는 두 세트를 사용하고 싶습니다. 의미가 있습니다 – codeMagic

+0

별도의 APK를 보내지 않으면 부족합니다. 자세한 내용은 http://stackoverflow.com/questions/3246447/how-to-set-the-style-attribute-attribute-programmatically-in- android – Catherine

답변

2

불행히도 이것은 불가능합니다.

앱 스타일은 프로그래밍 방식으로 앱을 제어 할 수 없으므로 플래그를 설정하고 각 클라이언트에 대해 별도로 작동하도록 설정할 수는 없습니다.

bash 스크립트를 사용하거나 빌드를 자동화하기 위해 maven을 사용하여 빌드마다 XML 파일을 in/out으로 교환 할 수 있습니다.

코드베이스가 두 클라이언트에서 모두 동일하면 라이브러리 프로젝트로 옮기고 두 개의 프로젝트를 만들어 각기 다른 테마를 가질 수 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 그래서 내가 마지막 선거에서 당신에게 투표했습니다 :) 그것은 좋은 가능성일지도 모르겠지만 나는 정확히 어떻게 그렇게 할 것인지 조사해야 할 것입니다. 그저 나야, 아니면 이것이 가능해야합니까? 나는 이것을 조사하고 잠시 생각하고 있었고 앞으로 며칠 안에 결정을 내릴 필요가있다. 생각해 보면,'테마'가 다른 '스타일'을 가지고 있고,'테마 '가 프로그램에 따라'스타일'과 함께 바뀔 수 있어야한다는 것입니다. – codeMagic

+0

내 OP의 마지막 코멘트에서 내 "솔루션"은 괜찮은 것 같습니다. – codeMagic

+0

빠른 응답과 설명에 다시 한 번 감사드립니다. 내게 이것이 불가능한 이유를 줄 수 있거나 내 "솔루션"이 실행 가능한 것처럼 보인다면 그것은 좋을 것입니다. ** 참고 ** 코드는 현재 정확히 동일하지만 유연함을 유지해야합니다. 세일즈맨의 역할을 잘 알고 있기 때문입니다.) – codeMagic

관련 문제