Verwendung von include-Tags mit? attr / myAttr

8

Ich versuche verschiedene Layouts in meine Ansicht einzubinden, abhängig vom übergeordneten Theme .

Der Idee folgend:

attrs.xml

%Vor%

styles.xml

%Vor%

activity.xml

%Vor%

Wenn ich den obigen Code ausführe, erhalte ich die folgende Ausnahme:

%Vor%

Was mache ich falsch? Ist das überhaupt möglich?

Hinweis # 1: Ich habe die Theme meiner MainActivity auf android:theme="@style/AppTheme"

gesetzt

Hinweis # 2: In der Design-Ansicht des Layout-Editors funktioniert alles wie erwartet. Wenn ich das Theme ändere, wird das Include korrekt aktualisiert.
Siehe auch die folgenden Screenshots:

    
user3420815 15.05.2015, 12:21
quelle

3 Antworten

4

Leider ist das nicht möglich, aber mir gefällt die Idee wirklich. Ich habe den Fluss von LayoutInflater verfolgt und das Attribut layout benötigt TypedValue.TYPE_REFERENCE was bedeutet, dass ?attr nicht erlaubt ist. Sie haben sogar einen Kommentar in der Erklärungsmethode hinterlassen.

%Vor%      

android.content.res.XmlBlock.java:385

Im Grunde haben Sie nichts falsch gemacht - die Inflation in Preview funktioniert anders, was die Verwirrung verursachte.

    
Lamorak 15.05.2015, 14:14
quelle
4

Seit Lamorak erklärte alles in seinem " eingehende "Antwort Ich denke, es ist sicher zu sagen, dass es keine Lösung mit dem <include /> -Tag für Ihr Problem gibt.
Also nach einem anderen Ansatz, der in meinem Testprojekt funktioniert hat:

# 1 - Ersetzen Sie <include /> durch <ViewStub />

%Vor%

# 2 - Erweitern Sie den ViewStub

%Vor%

Irgendwelche Nachteile mit dieser Methode? Nun, Sie werden das ViewStub-Layout nicht in Ihrem Design-Tab sehen und das <merge /> -Tag wird nicht funktionieren.

    
reVerse 15.05.2015 17:58
quelle
1

Nach einigen Recherchen fand ich dieses Problem - " wurde in Android23 behoben. Aber Blasebalg, Ausnahme wird geworfen.

    

ZzfGeorge 07.06.2016 08:26
quelle