Подтвердить что ты не робот

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

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

Кроме того, кто-нибудь знает, почему он возвращает IBinder, а не Window?

4b9b3361

Ответ 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);
    }
}

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