2011-10-24 7 views
0

私は時間をかけてこのソリューションを探していました。単純なテーマやスタイルをアプリケーション、アクティビティ、またはビューに適用する方法は?それは超簡単ですが、私のスタイルは常に無視されます。ここでAndroidでテーマやスタイルを適用できません

はstyle.xmlのコードです:リストビューで

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

とコード

<ListView android:layout_height="wrap_content" 
style="@style/master" 
android:id="@+id/list" 
android:layout_width="fill_parent"> 
</ListView> 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="master" parent ="@android:style/Theme.NoTitleBar"> 
     <item name="android:typeface">serif</item> 
     <item name="android:textColor">#8b8378</item> 
    </style> 
</resources> 

、ここでは、AndroidManifest.xmlを内のコードです何も起こらない。フォントスタイル、色はすべてデフォルトのままです。

<TextView android:gravity="center" android:typeface="serif" android:textColor="#8b7d6b" android:textAppearance="?android:attr/textAppearanceSmall" android:id="@+id/text_intro" android:layout_height="wrap_content" android:text="@string/welcome_text" android:layout_width="wrap_content" android:padding="20sp" android:layout_weight="0"></TextView> 

のような属性を明示的に宣言するだけです。私はEclipseがテーマとスタイルのプレビューをサポートしていないことを知っていますが、エミュレータでも動作しません。

お願いします!私はこの小さな問題に1週間悩まされているとは信じられません...事前にありがとう!

答えて

1

ここでは、Androidのスタイルやリソースについていくつか紹介します。

Androidスタイルは非常に一般的な機能であり、その結果、いくつかの設定が可能ですが無効で無視されます。あなたはいくつかにまたがって走ってきました。 :)

ビューに適用すると、スタイルはそのビューで同じ属性を設定することと同じになります。 スタイルは子ビューにカスケードしません。typefaceおよびtextColorはListViewでは無効なので、無視されます。またテーマはそのようなテーマで動作することはありません。テーマはさまざまな種類のビューにデフォルトのスタイルを提供するためです。 (なぜなら、エラーを生成するのではなく、無効な属性を静かに無視するのはなぜですか?新しい属性が後でプラットフォームリビジョンに追加されると、古いデバイスは互換性の解析方法がわからない余分な属性を無視する必要があるからです)。

  • TextViewsのスタイルを作成してください。
  • style=構文を使用して、リストアイテムレイアウト内のTextViewにそのスタイルを適用します(これは、貼り付けられたコードのようなテーマの親を持つべきではありません)。
+0

ありがとうございました!あなたはその質問に答えました。私が書体を追加した理由は、アプリケーション全体を通してフォントを変更したいからです。すべての可能なスタイルで書体を述べることに加えて、それを達成するための便利な方法はありますか? – um88hao

+0

テーマのウィジェットのタイプのデフォルトスタイルを設定できます。これらの属性は一般的に 'android:widgetClassNameStyle'の命名規則に従います。カスタムTextViewスタイルに 'android:textViewStyle'を設定してデフォルトとして適用することができます。 – adamp

関連する問題