Я не могу найти способ получить ссылку Window
содержа произвольное View
v. Я нашел getWindowToken, но я не могу выяснить, как использовать его? Кто-либо знает как?
Кроме того, делает любой знает, почему это возвращается IBinder
вместо a Window
?
Ну... поскольку все представления имеют ссылку на создавшую их активность (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. Надеюсь, это вам поможет. Расскажите мне, если у вас возникнут проблемы с этим.