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