Найдите Окно, содержащее Представление в Android

Я не могу найти способ получить ссылку Window содержа произвольное View v. Я нашел getWindowToken, но я не могу выяснить, как использовать его? Кто-либо знает как?

Кроме того, делает любой знает, почему это возвращается IBinder вместо a Window?

27
задан Casebash 12 May 2010 в 06:41
поделиться

1 ответ

Ну... поскольку все представления имеют ссылку на создавшую их активность (Context), вы можете использовать этот Context для получения ссылки на окно. Позвольте мне показать вам пример, который я написал несколько минут назад:

// main activity
import android.app.Activity;
import android.os.Bundle;
public class GetWindow extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyView view = new MyView(this);
        view.changeSomethingInWindow(); // keep an eye on this method
        setContentView(view);
    }
}

Затем, внутри вашего представления вы можете сделать следующее:

// your view :D
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class MyView extends View{
    public MyView(Context context) {
        super(context);
    }

    public void changeSomethingInWindow(){
        // get a reference of the activity
        Activity parent = (Activity)getContext();
        // using the activity, get Window reference
        Window window = parent.getWindow();
        // using the reference of the window, do whatever you want :D
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}

В этом случае я изменяю режим отображения окна на Fullscreen. Надеюсь, это вам поможет. Расскажите мне, если у вас возникнут проблемы с этим.

18
ответ дан 28 November 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: