8

Androidプロジェクトにいくつかのカスタムビューがあり、関連する詳細をattrs.xmlファイルに追加しました。これで、XMLを介してオブジェクトを実装できます。これは正常に機能します。

これらの要素のスタイルを設定するにはどうすればよいですか?styles.xmlでカスタム属性を使用しようとすると、「指定された名前に一致するリソースが見つかりません:」というエラーが発生します。

通常のxml開発でカスタムビューを使用するには、xmlns:app="http://schemas.android.com/apk/res/bla.bla.bla"を使用します。スタイルで使用するための正しいものは何ですか?

これが私のスタイルの現在の姿です

<style name="Journey_DaySelect_Sunday">
    <item name="app:onImage">@drawable/day_sunday_selected</item>
    <item name="app:offImage">@drawable/day_sunday</item>
</style>
4

3 に答える 3

19

グーグルでより集中的に検索した後、私はそれが他の場所で答えられるのを見つけるのをあきらめました、そして偶然に私の生成されたRファイルの絶対名前空間を使用しようとしました。これですべての問題が解決しますように。

Rファイルを含む名前空間を使用する

<style name="Journey_DaySelect_Sunday" parent="Journey_DaySelect">
    <item name="AppZappy.NIRailAndBus:onImage">@drawable/day_sunday_selected</item>
    <item name="AppZappy.NIRailAndBus:offImage">@drawable/day_sunday</item>
</style>
于 2011-03-18T20:14:55.040 に答える
2

明確にするために、アイテムのname属性は、attrs.xmlのdeclare-styleablename属性+":"+属性名にあるものと同じである必要があります。

例えば:

attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>  
    <declare-styleable name="com.chuck.norris">
        <attr name="actionBarTextColor" format="color"/>
    </declare-styleable> 
</resources>

style.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="myNewStyle">
        <item name="android:textColor">#FFFF0000</item>
        <item name="com.chuck.norris:actionBarTextColor">#ffff0000</item>
    </style>
</resources>

その後、manifest.xmlファイルのテーマを使用して、このスタイルをすべてのアクティビティに適用できます。「actionBarTextColor」属性を使用するカスタムビューが存在する場所であればどこでも、Javaコードを使用できます。

TypedArray typedArray = context.obtainStyledAttributes(attrSet, R.styleable.com_chuck_norris);
COLOR_ACTION_BAR_TEXT = typedArray.getColor(R.styleable.com_chuck_norris_actionBarTextColor, 0xff0000ff);
typedArray.recycle();

上記のようにstyle.xmlファイルでスキーマを定義できない理由はわかりませんが、style.xmlの制限のようです。

于 2012-01-03T19:05:36.870 に答える
0

このソリューションを試してください

<style name="Journey_DaySelect_Sunday">
<item name="onImage">@drawable/day_sunday_selected</item>
<item name="offImage">@drawable/day_sunday</item>
</style>

リファレンス(中国語)

あなたたちがそれが役に立つと思うなら、私はそれを翻訳します。

于 2016-07-12T06:14:58.807 に答える