Frage

Ich habe ein paar benutzerdefinierte Ansichten in meinem Android -Projekt und die entsprechenden Details zur Datei attr.xml hinzugefügt. Und jetzt kann ich meine Objekte über XML implementieren. Das funktioniert gut.

Wie style ich diese Elemente? Wenn ich versuche, meine benutzerdefinierten Attribute in der stiles.xml zu verwenden, erhalten Sie einen Fehler "Keine Ressource gefunden, die mit dem angegebenen Namen entspricht:"

Für die Verwendung der benutzerdefinierten Ansichten in der normalen XML -Entwicklung verwende ich XMLNS: app = "http://schemas.android.com/apk/res/bla.bla.bla". Was ist die richtige Verwendung in Stilen?

So sieht mein Stil derzeit aus

<style name="Journey_DaySelect_Sunday">
    <item name="app:onImage">@drawable/day_sunday_selected</item>
    <item name="app:offImage">@drawable/day_sunday</item>
</style>
War es hilfreich?

Lösung

Nach der intensiveren Suche bei Google gab ich es auf, es anderswo zu finden, und und zufällig Ich habe versucht, den absoluten Namespace meiner generierten R -Datei zu verwenden, die es funktioniert hat. Möge dies alle Ihre Probleme lösen.

Verwenden Sie den Namespace mit Ihrer R -Datei

<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>

Andere Tipps

Zur Klarstellung sollte das Namensattribut des Elements übereinstimmen wie das, was in den Declare-Stylable-Namensattribut des Attr.xml + ":" + der Attributname ist.

Zum Beispiel:

attr.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>

Sie können diesen Stil dann auf alle Aktivitäten anwenden, indem Sie ein Thema in Ihrer Manifest.xml -Datei verwenden. Überall, wo eine benutzerdefinierte Ansicht besteht, die das Attribut "ActionBartextColor" verwenden möchte, können Sie den Java -Code verwenden:

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();

Ich bin mir nicht sicher, warum Sie Ihr Schema nicht einfach in Ihrer style.xml -Datei definieren können, wie oben gefragt, aber es scheint eine Einschränkung von style.xml zu sein.

Probieren Sie diese Lösung aus

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

Referenz (Chinesisch)

Wenn ihr es nützlich hält, werde ich es übersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top