Android fragment 中控制某一个界面全屏与否


       项目中,只允许一个界面在横屏的时候,显示是全屏的,竖屏切换回来的时候又需要显示状态栏,所以需要监听横竖屏的状态,还要修改状态栏的隐藏与显示,如下代码:

/**
	 * 添加横竖屏监听,隐藏图形的菜单控件,2015年11月12日10:15:00:qiulinhe
	 */
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);

		if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
			// // 设置全屏
			WindowManager.LayoutParams lp = getActivity().getWindow()
					.getAttributes();
			lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
			getActivity().getWindow().setAttributes(lp);
			getActivity().getWindow().addFlags(
					WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

			pricemenu.setVisibility(View.VISIBLE);
			chart_btn.setVisibility(View.GONE);
			user_status_bar.setVisibility(View.GONE);

			// chart_btn.setVisibility(View.VISIBLE);
			// chatrbtnlayout.setVisibility(View.VISIBLE);
		} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
			WindowManager.LayoutParams attr = getActivity().getWindow()
					.getAttributes();
			attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
			getActivity().getWindow().setAttributes(attr);
			getActivity().getWindow().clearFlags(
					WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

			pricemenu.setVisibility(View.VISIBLE);
			user_status_bar.setVisibility(View.VISIBLE);
			chart_btn.setVisibility(View.VISIBLE);
			pricemenu.setVisibility(View.GONE);

		}
	}


      布局中,采用的线性权重布局,如下示例:

    

   

            

            

                
 
  

     这里有一个问题是让webview占据横屏的全屏时,我设置了300dp,依旧占满了屏幕 
  

       记录一下,以便日后查找

===========================分割线,2015年11月23日09:22:56=================================

上述方式设置的时候会出现问题,后来就修改成如下代码,就可以单独的设置某个界面是否显示状态栏,如下:

	/**
	 * 添加横竖屏监听,隐藏图形的菜单控件
	 */
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);

		if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
			// // 设置全屏
			// // 设置全屏
			getActivity().getWindow().setFlags(
					WindowManager.LayoutParams.FLAG_FULLSCREEN,
					WindowManager.LayoutParams.FLAG_FULLSCREEN);

			
		} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

			WindowManager.LayoutParams attrs = getActivity().getWindow()
					.getAttributes();
			attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
			getActivity().getWindow().setAttributes(attrs);

		}
	}



你可能感兴趣的:(Android)