20

アクティビティへの適用を拒否するテーマがあります - どのスタイルも適用されません。layout_width/layout_height属性を指定しない<Button>と、実行時エラーが発生し、Buttonクラスが適用されていないことが示されます。

/res/values/themes.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme" parent="android:style/Theme.Black">
        <item name="android:windowNoTitle">true</item>
        <item name="android:buttonStyle">@style/Button</item>
        <item name="android:windowBackground">@color/page_background_light</item>
        <item name="android:textAppearance">@style/TextAppearance</item>
    </style>
</resources>

/res/values/styles.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="TextAppearance" parent="@android:style/TextAppearance">
        <item name="android:textSize">12sp</item>
        <item name="android:textColor">@color/darkblue</item>
    </style>
    <style name="Button" parent="@android:style/Widget.Button">
        <item name="android:layout_width">fill_parent</item> 
        <item name="android:layout_height">wrap_content</item>
        <!--<item name="android:textColor">#3C2F4F</item>
        <item name="android:textSize">20dip</item>-->
    </style>
</resources>

および関連するマニフェスト設定:

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

私が見逃している明らかな間違いは何ですか?

4

5 に答える 5

23

私もこれに苦労してきましたが、最終的に何が問題だったのかを発見したと思います - おそらくそれは同じです.

カスタム テーマをフォルダーで定義しましたが、フォルダーとres\valuesフォルダーでは定義しませんでした。一部のデバイス(特に私がテストしていた2つ!)では、テーマが存在しないため適用できなかったと思います。values-v11values-v14

カスタム テーマ (アプリケーション レベルで適用) に設定されたプロパティが有効になっていることがわかります。

于 2012-11-18T19:51:31.850 に答える
4

すべてのテーマを明示的に定義する必要がありました<activity>

于 2012-09-14T07:37:06.933 に答える
3

この回答によるlayout_widthlayout_height、スタイルを提供することはできないようです。コンパイル中に発生する例外は次のとおりです。

E/AndroidRuntime(4117): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example/com.example.MainActivity}:
java.lang.RuntimeException: Binary XML file line #79: You must supply a
layout_width attribute.

原因はわかりませんが、回避策があるかもしれません。この質問が示唆するように、幅と高さのパラメーターとして参照を提供できる場合があります。

繰り返しますが、私の経験では、Android はスタイルによるウィジェットの寸法の提供を適切にサポートしていません。

于 2012-09-25T09:26:54.223 に答える
0

編集:これが質問の単なるタイプミスかどうかはわかりませんが、メインテーマで Android の Theme.Black スタイルを間違って参照しています。あなたのコードは言う:

<style name="Theme" parent="android:style/Theme.Black">

いつ言うべきか:

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

アプリケーションを実行する前に Lint やコンパイラが怒鳴りつけるような気がしますが、それが役立つかもしれません。

于 2012-09-21T17:10:54.333 に答える
0

単なる好奇心から。テーマの名前を FooBar などの別の名前に変更してみてください。

ここで明らかなことを述べますが、ボタンが正しいスタイルを使用していることを確認してください。

于 2011-09-22T16:46:44.717 に答える