Android-темы и библиотечные проекты - PullRequest
1 голос
/ 10 октября 2011

У меня есть проект библиотеки, который является TabActivity, и я переопределил некоторые стили, чтобы нарисовать мой пользовательский ToggleButton с другим фоном.Я добавил файл styles.xml:

     <resources>
         <style name="custom_button" parent="@android:style/Widget.Button">
             <item name="android:gravity">center_vertical|center_horizontal</item>
             <item name="android:textColor">#FFFFFFFF</item>
             <item name="android:shadowColor">#FF000000</item>
             <item name="android:shadowDx">0</item>
             <item name="android:shadowDy">-1</item>
             <item name="android:shadowRadius">0.2</item>
             <item name="android:textSize">16dip</item>
             <item name="android:textStyle">bold</item>
             <item name="android:background">@drawable/btn_custom</item>
             <item name="android:focusable">true</item>
             <item name="android:clickable">true</item>
         </style>
     </resources>

И файл themes.xml:

<resources>
    <style name="custom_theme" parent="android:style/Theme.NoTitleBar">
        <item name="android:buttonStyleToggle">@style/custom_button</item>
    </style>
</resources>

И применил тему в файле манифеста.

Все работаетхорошо, если я начну занятие напрямую, а не буду библиотечным проектом.Но если я запускаю это действие (используя намерение) из другого проекта, пользовательская тема не применяется к кнопкам переключения, они выглядят как тема Android по умолчанию.Другие ресурсы загружены, в проекте библиотеки есть несколько элементов для рисования, и они хорошо окрашены.Я не использую активы.

Другая странная вещь заключается в том, что если я изменю текст кнопки:

ToggleButton tbLocal = (ToggleButton)findViewById(R.id.tblocal);
tbLocal.setText("Local");

... при запуске действия текст не изменяется, а текст по умолчанию (ДА / НЕТ)используемый.Если я начну работу с библиотечным проектом напрямую, этого тоже не произойдет.

Что может быть не так?

1 Ответ

1 голос
/ 15 октября 2011

У вас есть два файла манифеста: один в вашем проекте библиотеки, а другой в проекте приложения. Вам необходимо применить свою тему в файле приложения AndroidManifest.xml, а не в библиотечном (на самом деле определять элемент <activity> в манифесте проекта библиотеки бесполезно).

Для включения / выключения текстовой кнопки используйте следующее:

ToggleButton tbLocal = (ToggleButton)findViewById(R.id.tblocal);
tbLocal.setTextOn("LocalOn");
tbLocal.setTextOff("LocalOff");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...