Ich habe ein benutzerdefiniertes Layout, das benutzerdefinierte Attribute, von denen eine Farbe ist. Ich habe Benutzer setzen dieses Attribut auf eine Farbe (keine gemeinsame Farbe) und ich benutze TypedArray getColor-Methode, um diese Farbe abrufen und setzen Sie es auf eine ganze Zahl (wenn ich diese int drucken, ist es negativ). Lassen Sie uns sagen, dass ich etwas tun:Android - Farbe aus benutzerdefinierten Attribut zurückgegeben einen anderen Wert als die gleiche Farbe aus colors.xml
int myColor;
TypedArray ta = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, 0, 0);
myColor = ta.getColor(R.styleable.MyView_myColor, -1);
if (myColor == R.color.special_shade_of_yellow) {
mySpecialMethod()
}
die wir nun ein Benutzer sagen das Attribut setzt R.color.special_shade_of_yellow zu sein. Der if-Block wird jedoch niemals durchlaufen, so dass mySpecialMethod() niemals aufgerufen wird. Aus irgendeinem Grund ist myColor ein negativer Wert, während R.color.special_shade_of_yellow dies nicht ist. Warum geben sie nicht dieselben Werte zurück? Vielen Dank!
Wow, gut zu wissen! Das war die Lösung. Vielen Dank! – Elise