カスタムビューのスタイリング
-
27-10-2019 - |
質問
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>
解決
Googleでより集中的に検索した後、私はそれが他の場所で答えられているのを見つけることをあきらめ、そして 偶然に 生成された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>
他のヒント
明確にするために、アイテムの名前属性は、属性内にあるものと同じでなければなりません。XMLの宣言型の名前属性 + ":" +属性名。
例えば:
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の制限のようです。
このソリューションを試してください
<style name="Journey_DaySelect_Sunday">
<item name="onImage">@drawable/day_sunday_selected</item>
<item name="offImage">@drawable/day_sunday</item>
</style>
皆さんが便利だと思うなら、私はそれを翻訳します。