レガシーアプリ互換性のためのアレ。targetSdkVersionをあげると表示されなくなるので、無理やり表示させてみる。
Androidアプリ開発ではよく使う?リフレクションを使用。setContentViewしてからWindowに隠しフラグをセットする。
public class HogeActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hoge);
setLegacyOverflow(getWindow(), true);
}
void setLegacyOverflow(Window window, boolean enable) {
try {
int flag = WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null);
if (enable) {
window.addFlags(i);
} else {
window.clearFlags(i);
}
} catch (NoSuchFieldException e) {
// 2.3以下はフラグなし
} catch (IllegalAccessException e) {
// 使えなくなった...
}
}
}
