android ナビゲーションバー - アンドロイドフルスクリーンモードから終了




表示 アクション (4)

私はAndroidで働いています。 私は自分の活動を全画面モードで表示する必要があります、そして私は以下のコードを使用してこれをしました。

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);

今それはこのように見えます: -

今、私はこのフルモードを終了したいので、私の活動は以前のように表示されます。 このような:-

私はフルモードまたは通常モードを切り替えるために使用されるボタンがあります、私は何度も何度もモードを切り替えます。 どうしたらいいのか教えてください。 全画面から通常画面を取得する方法を示します。

前もって感謝します。


Answers

以下のコードに従って、私はあなたの必要性によってTitleBarを隠すことができます、

Button full;
static int vari = 0;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    full = (Button)findViewById(R.id.fullview);
    full.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(vari == 0)
            {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                vari = 1;
            }else 
            {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);                 
                vari = 0;
            }

        }
    });
}

このコードを試してください。 それはあなたに大いに役立ちます。


フラグメントがアクティビティにアタッチされたときにICSから、全画面モードがリセットされます。 最善の方法は、コードを追加することです。

getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getActivity().findViewById(R.id.root).setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

フラグメントのコールバックonActivityCreated内(レイアウトID rootはActivityのルートレイアウト)。


フルスクリーンを無効にするには:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
ActivitiesCurrentContentView.requestLayout();

フルスクリーンを再び有効にするには:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
ActivitiesCurrentContentView.requestLayout();

あなたの場合の鍵はレイアウトを再要求することだと思います。


ディスプレイの大きさをピクセルで表現したい場合、 getSizeを使うことができます:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

Activityていない場合は、 WINDOW_SERVICE経由でデフォルトのDisplayを取得できます:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

断片化しており、これを実現したい場合は、Activity.WindowManager(Xamarin.Android)またはgetActivity()。getWindowManager()(Java)を使用します。

getSizeが導入される前に(APIレベル13で)、現在推奨されていないgetWidthメソッドとgetHeightメソッドを使用getWidth getHeight

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

しかし、あなたが説明しているユースケースでは、レイアウトのマージン/パディングがより適切なようです。

別の方法は: DisplayMetrics

サイズ、密度、フォントのスケーリングなど、ディスプレイに関する一般的な情報を記述する構造体。 DisplayMetricsメンバにアクセスするには、次のようにオブジェクトを初期化します。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

widthPixelsを使用してwidthPixels情報を取得できます。

msgstr "ディスプレイの絶対幅をピクセル単位で指定します。"

例:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);




android layoutparams android-windowmanager