Ich habe eine Situation, in der ich einen Hintergrund auf einem LinearLayout programmatisch setzen muss.
In meinem Layout setze ich meinen Hintergrund mit 'android: background="? android: attr / activatedBackgroundIndicator", aber ich möchte das programmatisch einstellen:
%Vor%Ich habe versucht mit:
%Vor%Aber es stürzt ab. Irgendwelche Ideen?
Bearbeiten: Ich hatte auch versucht mit:
%Vor%Ich hatte das gleiche Problem und habe es mit diesem Code behoben.
Die android.R.attr. * sind Zeiger auf die in einem Theme und nicht auf die tatsächlich zeichnende Ressource definiert. Sie müssen das TypedArray verwenden, um auf die ID zuzugreifen.
%Vor%Ich habe das in meinem Adapter für benutzerdefinierte Listen verwendet, als SDK erkannt wurde und es funktioniert hat.
Es ist eine schlechte Idee, es so zu machen, wie es die angenommene Antwort sagt. Das Problem ist, dass Sie auch die onItemCheckedStateChanged
der Liste aufrufen müssen, um zu aktualisieren, was benötigt wird (zB der Titel der Aktionsleiste).
In diesem Fall müssen Sie einfach getListView().setItemChecked(position, true);
aufrufen, wenn das Element aktiviert ist, und getListView().setItemChecked(position, false);
, wenn es nicht aktiviert ist.
probiere das
aus %Vor%Ich habe eine Situation, in der ich einen Hintergrund auf einem LinearLayout programmatisch setzen muss.
In meinem Layout setze ich meinen Hintergrund mit 'android: background="? android: attr / activatedBackgroundIndicator", aber ich möchte das programmatisch einstellen:
%Vor%Ich habe versucht mit:
%Vor%Aber es stürzt ab. Irgendwelche Ideen?
Bearbeiten: Ich hatte auch versucht mit:
%Vor%Ich hatte das gleiche Problem und habe es mit diesem Code behoben.
Die android.R.attr. * sind Zeiger auf die in einem Theme und nicht auf die tatsächlich zeichnende Ressource definiert. Sie müssen das TypedArray verwenden, um auf die ID zuzugreifen.
%Vor%Ich habe das in meinem Adapter für benutzerdefinierte Listen verwendet, als SDK erkannt wurde und es funktioniert hat.
Es ist eine schlechte Idee, es so zu machen, wie es die angenommene Antwort sagt. Das Problem ist, dass Sie auch die TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.selectableItemBackgroun d, outValue, true);
view.setBackgroundResource(outValue.resourceId);
der Liste aufrufen müssen, um zu aktualisieren, was benötigt wird (zB der Titel der Aktionsleiste).
In diesem Fall müssen Sie einfach %code% aufrufen, wenn das Element aktiviert ist, und %code% , wenn es nicht aktiviert ist.
probiere diese Zeile
%Vor%statt
%Vor%Bitte versuchen Sie den folgenden Code.
%Vor%Sie können so etwas verwenden
%code%