Ich erstelle eine Aktivität, die als Dialogformat gilt: Sie deckt nicht den gesamten Bildschirm ab, sondern nur einen Teil davon. Was ich tat, war in der onCreate() -Methode dieser Aktivität, nach dem Aufruf setContentView() Ich nenne:Einstellen des Fensterlayouts nach dem Aufruf von setContentView()
window.setLayout(windowWidthInDp, LayoutParams.WRAP_CONTENT);
Und es funktioniert nicht. Ich brauche die folgenden stattdessen zu tun, damit es funktioniert:
window.getDecorView().post(new Runnable() {
@Override
public void run() {
window.setLayout(windowWidthInDp, LayoutParams.WRAP_CONTENT);
}
});
Auch dies NACH setContentView ist() aufgerufen wird. Warum muss ich es in die Nachrichtenwarteschlange stellen, anstatt es direkt anzurufen? Danke!
Vielen Dank für Ihre Antwort! Gibt es ein anderes Signal für das Layout, das vollständig konfiguriert ist (außer der Methode onCreate())? – seemuch
Einige Leute benutzen 'ViewTreeObserver's addOnGlobalLayoutListener()'. –
Weitere Informationen finden Sie unter http://stackoverflow.com/questions/4393612/when-can-i-first-measure-a-view. Hier schlägt jemand vor, 'ViewTreeObserver.addOnPreDrawListener()' –