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);

		}
	}


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

    

   <LinearLayout
            android:id="@+id/chart_webviewlayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:orientation="vertical"
            >

            <WebView
                android:id="@+id/chart_webview"
                android:layout_width="match_parent"
                android:layout_height="300dp"
                android:layout_weight="4"
                android:visibility="gone" />

            <LinearLayout
                android:id="@+id/pricemenu"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@color/black"
                android:orientation="horizontal"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:visibility="gone" >

                <TextView
                    android:id="@+id/buttonceshi"
                    android:layout_width="65dp"
                    android:layout_height="45dp"
                    android:layout_weight="1"
                    android:background="@drawable/amenu" /><pre name="code" class="html"></LinearLayout

     这里有一个问题是让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);

		}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值