2012-01-10 13 views
5

アンドロイドドキュメント、アンドロイドによると:startColor値として属性を取ることができる:またはテーマアンドロイドにテーマ属性を追加する方法:Androidのグラデーション描画でstartColor?

また、これは、(「:タイプ名[パッケージ] @」形 で)リソースへの参照であってもよいですこのタイプの値を含む属性(形式: "?[package:] [type:] name")。

グラデーションドローバブルにアトリビュートを追加しようとしていますが、エラーが発生します。ここで描画可能のコードは次のとおりです。ここで

は、コードがstyle.xmlである:

<style name="test" parent="android:Theme"> 
    <item name="android:startColor">#0b2749</item> 
    <item name="startColor">#0b2749</item> 
</style> 

私はこのエラーメッセージを取得するアクティビティを実行しようとすると:

01-10 20:47:30.810: E/AndroidRuntime(7279): Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2 

私はstartColorを?attr/startColorに変更しようとしました。それでも同じエラーが発生しました。私はAndroidManifest.xmlファイルのアクティビティにもテーマを適用しました。

グラデーション描画にテーマ属性を追加するにはどうすればよいですか?

+0

アンドロイド:ストローク要素の色と同じ問題です。実際、この例外は、drawableからスタイル属性を参照しようとするたびに発生します。これはAndroidのバグのようです。 – Guillaume

+0

私の答えは – Guillaume

答えて

-1

あなたの色を少し間違えたようです。 Androidの場合、入力の種類は#[alpha] [hex]です。あなたはちょうどヘクスの部分を提供しました。 Androidはこれをサポートしていないため、UnsupportedOperationExceptionです。

は、これを使用してみてください:

<item name="android:startColor">#FF0b2749</item>

私は、スタイルと組み合わせて、グラデーションで働いたことはないとして、これは、しかし動作することを保証することはできません。

+0

です実際にはアンドロイドはアルファ値のない色をサポートしています。同じ文書によると、「#rgb」、「#argb」、「#rrggbb」、または「#aarrggbb」の形式のカラー値でなければなりません。 –

+0

うん。あなたはもっと知っている。 アルファを追加するまでしばらく前に問題がありましたが、それがなくても動作することを知っておいてよかったです。 –

+0

しかし、問題は解決しません。アルファ値の有無にかかわらず、同じ例外が発生します。 – Guillaume

0
<style name="customTheme" parent="android:Theme"> 
    <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item> 
</style> 

私は色違いを先に私の描画可能のいずれかで同じ問題を抱えていた値フォルダとのstyles.xml

<color name="titlebackgroundcolor">#FFFFFF</color> 
<color name="titletextcolor">#000000</color> 
+0

コードが不明です。私はそれをテストすることができるようにフォーマットしていただけますか? <「:テーマアンドロイド」スタイル名=「customTheme」親=> 名=「アンドロイド:windowTitleBackgroundStyle」@style –

+0

ちょうどそれがテキスト見えない –

+0

を作っていたように私はそれを置くことができなかった、スタイルやアイテムで< and >タグを追加します/ WindowTitleBackground <色名= "titlebackgroundcolor"> #FFFFFF <色名= "titletextcolor">のstyles.xml の値フォルダと次のコードにcolors.xmlに上記のコードを追加#000000 –

3

に次のコードでcolors.xmlで上記のコードを追加します。選択されたテーマに基づいています。私は回避策を見つけましたが、それは問題を正確には解決しませんが、私のために働きます。私のスタイルで色を定義するのではなく、図面全体を参照として定義します。 attrs.xml

<resources> 
    <attr name="myDrawable" format="reference"/> 
<resources> 

そして、私のstyle.xml中:

もちろん
<style name="style1"> 
    <item name="myDrawable">@drawable/myDrawable1</item> 
<style> 
<style name="style2"> 
    <item name="myDrawable">@drawable/myDrawable2</item> 
<style> 

、あなたは描画可能なフォルダ、myDrawable1myDrawable2、正しい色を有する各1で2つのドロウアブルを定義する必要がありますハードコードされています。

これは問題なく動作します。

+0

ありがとうございます。私はこの解決法を知っています。また、アプリケーションで描画可能なものの数を減らして属性を解決して、あまりにも過度に扱いやすいようにしておきたい理由を知っています。 –

+0

はい私は同じ懸念を抱いています。そのため、回避策と呼んでいます。私はまだ本当の解決策を見つけることに興味があります。私はそこに存在することを疑い始めますが、Androidのバグや機能に似ているようです... – Guillaume

+0

また、ドロアブルにサブフォルダを持つことができないという事実フォルダは、中〜大規模なプロジェクト(私は私のプロジェクトの1つに5000以上のアイテムがあります...)の苦痛です。 – Guillaume

関連する問題