Вкладки, влияющие на темы приложений и действий - PullRequest
1 голос
/ 29 апреля 2011

Мы разрабатываем приложение для Android с несколькими различными вкладками. Мы пытались применить тему ко всему приложению, а также пытались применить тему к конкретным действиям. Ни один не имеет никакого эффекта.

У меня есть этот файл стиля:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <style name="recapmain">
        <item name="android:buttonStyle">@style/recapButton</item>
        <item name="android:textViewStyle">@style/recapText</item>
    </style>
    <style name="recapButton" parent="android:style/Widget.Button">
        <item name="android:textSize">30sp</item>
        <item name="android:background">#FF0000</item>
    </style>
    <style name="recapText">
        <item name="android:textSize">30dip</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>
</resources>

Тег приложения в файле манифеста выглядит так:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/recapmain">

    <activity android:name="appname"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Это не работает. Приложение просто не реагирует на тему. Если я установлю конкретный вид для использования одного из стилей, он отлично работает. Итак, я могу сделать это в файле XML для действия:

<Button 
android:id="@+id/OverviewButtonYears" 
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:text="@string/years"
android:onClick="years"
style="@style/recapButton"
/>

Это будет соответствующим образом стилизовать кнопку.

мы также пытались применить тему к определенному тегу активности, но безрезультатно.

Теперь, что работает , удаляет тег intent-filter-tag из тега приложения и помещает его в тег активности, например:

<activity android:name=".PolicyTab"  >
            <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Это запускает только конкретное действие, и у него есть соответствующая тема.

Тогда мой вопрос: почему? Мы предположили, что это как-то связано с вкладками, так как запуск только одного действия активирует тему. Что нам нужно сделать, чтобы заставить его работать с вкладками?

1 Ответ

1 голос
/ 29 апреля 2011

Если вы хотите, чтобы ваша основная тема приложения была android:theme="@android:style/Theme.NoTitleBar" с настраиваемыми стилями управления, то вы должны расширить эту тему со своими предпочтениями:

<style name="recapmain" parent="@android:style/Theme.NoTitleBar">

Эта строка примет стили родительской темы вrecapmain, и внутри вы можете написать свои собственные настройки (как у вас уже есть для buttonStyle и textViewStyle).

Внутри androidManifest.xml вы устанавливаете тему приложения в свой собственный стиль:

<application android:icon="@drawable/icon" android:label="@string/app_name" 
    android:theme="@style/recapmain">

Обновление Ваш файл styles.xml должен содержать:

<style name="recapmain" parent="@android:style/Theme.NoTitleBar">
    <item name="android:buttonStyle">@style/recapButton</item>
    <item name="android:textViewStyle">@style/recapText</item>
</style>
<style name="recapButton" parent="android:style/Widget.Button">
    <item name="android:textSize">30sp</item>
    <item name="android:background">#FF0000</item>
</style>
<style name="recapText" parent="android:style/Widget.TextView">
    <item name="android:textSize">30dip</item>
    <item name="android:textColor">#FFFFFF</item>
</style>
...