2013-05-10 2 views
2

Я использую пользовательские styles и я делаю хорошо, но теперь я запутался о том, как использовать совершенно другую styles для виджетов, таких как CompoundButtons, Spinners, ImageButton с, и т.д .. Я имеют обычай Buttons для каждого типа, и каждый имеет свой собственный drawable в зависимости от его состояния. То, что я выяснил, но мне нужно два совершенно разных Themes (например, используйте food_orange ImageButton, когда состояние нажато, и используйте meal_blue для ImageButton состояния, нажатого для моего другого Theme) в зависимости от того, из какого из двух клиентов приложение предназначено. Я искал эту проблему, так что либо это невозможно без двух отдельных приложений, либо я не ищу правильные условия или полностью понимаю themes (возможно, оба).Создайте две отдельные темы в приложении

Небольшой пример того, что я в настоящее время находится в моем styles.xml

// 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> 

Я первоначально создал обычай theme с чем-то вроде

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

ActionBar часть не имеет никакого значения, потому что я создал собственный бар но если бы я мог это сделать, и внутри здесь диктовать использовать приведенные выше примеры стилей ImageButton, тогда это было бы здорово.

Надеюсь, я объяснил это правильно. Может ли кто-нибудь сказать мне, возможно ли это. Я не могу себе представить, что мне нужны две отдельные версии приложения, но, может быть. Я думал, что могу объявить эти styles внутри разных themes, но я, похоже, не смог это сделать для widgets.

Просто, чтобы уточнить, вопрос в том, как я могу использовать этот первый фрагмент кода во втором фрагменте и сделать это для двух отдельных тем? Благодаря!

+0

Я действительно смущен. Вы хотите иметь разные стили для своих кнопок в зависимости от их состояния? Это ваша конечная цель? – Catherine

+0

У меня уже есть два разных значка для них, но два набора. Каждая кнопка «Button» имеет значок для нажатия и один для обычного. Но у меня есть два набора этих ... скажем, один комплект для компании A и один комплект для компании B. Я хочу, чтобы он использовал кнопки набора 1, если он был загружен компанией A, и установил два, если они были загружены компанией B. Надеюсь, что имеет смысл – codeMagic

+0

За исключением отправки их отдельных APK, я не уверен, что вы можете это сделать - см. http://stackoverflow.com/questions/3246447/how-to-set-the-style-attribute-programmatically-in- android – Catherine

ответ

2

К сожалению, это невозможно.

Стили приложений не могут управляться программным приложением, поэтому вы не можете установить флаг и работать отдельно для каждого клиента.

Возможно, у вас может быть сценарий bash или использовать maven для автоматизации сборок путем замены файлов XML в каждом из них.

Если ваша кодовая база одинакова для обоих клиентов, вы можете перенести ее в проект библиотеки и создать два проекта, которые вытекают из нее, чтобы иметь отдельные темы.

+0

Спасибо за ваш быстрый ответ. Вот почему я проголосовал за вас на последних выборах :) Похоже, это может быть хорошей возможностью, но мне придется посмотреть, как я это сделаю. Это только я или это возможно? Я некоторое время искал и думал, как это сделать, и мне нужно принять решение в ближайшие пару дней. То, как я думаю об этом, заключается в том, что вы должны иметь «тему», содержащую разные «стили», и изменять «Тема» вместе с соответствующими «стилями» программно. – codeMagic

+0

Является ли мое «решение» в моем последнем комментарии моего OP показаться вам достойным? – codeMagic

+0

Еще раз спасибо за ваш быстрый ответ и объяснение. Если бы вы могли дать мне повод, почему это невозможно, или если мое «решение» кажется жизнеспособным, это было бы здорово. ** Примечание ** код в точности то же самое, но я должен оставить его гибким, потому что, ну, вы знаете, как продавец;) – codeMagic

Смежные вопросы