[Android] Widget layout einer custom preference verändern

Ich wollte das Widget-Layout einer benutzerdefinierten dialog-setting verwenden, um mein ausgewähltes Element anzuzeigen, aber es war ziemlich schwierig, dies zu tun.

Zunächst muss die Layout-Datei erstellt werden. Meine Datei enthält nur eine Bildansicht, die ich entsprechend den gewählten Einstellungen aktualisieren möchte. Sie muss der Einstellung in der xml-Datei des Einstellungsbildschirms wie folgt hinzugefügt werden:

android:widgetLayout="@layout/the_layout"

Aber das Problem ist: Wie kann man auf dieses Layout zugreifen? Viele Lösungen, die ich gefunden habe, schlugen vor, ein benutzerdefiniertes Einstellungslayout zu erstellen und die Methode onCreateView() der Einstellung zu überschreiben, um es anzuwenden. Aber das hatte einige hässliche Konsequenzen: Der Textstil unterschied sich von den Standardeinstellungen, so dass er in Kombination mit anderen Einstellungen schlecht aussehen würde.

Die elegantere Lösung ist, die Methode onCreateView() zu überschreiben, aber kein neues Layout anzuwenden. Diese Methode gibt das Standardlayout zurück, in dem sich das Layout des Widgets befindet. Ich musste also nur dieses Layout verwenden, um meine imageView auf die folgende Weise zu suchen:

@Override
protected View onCreateView(ViewGroup parent) {
    View view = super.onCreateView(parent);

    imageView = (ImageView) view.findViewById(R.id.your_image_id_here);
    
    //do something with it here

    return view;
}

Wenn Sie noch keine benutzerdefinierte Klasse für die Einstellung haben, erstellen Sie sie und überschreiben Sie dort onCreateView().