① android 怎样让fragment全屏
让Fragment 所属的Activity 全屏就可以了
Fragment 本身就是在Activity里面存在的 后者是前者的容器容器全屏了 他自然也全屏了
一劳永逸的方法 在Manifest文件里面的Aplication 里面的那个theme
android:theme="@android:style/Theme.Black.NoTitleBar"
例如
<application
android:allowBackup="true"
android:icon="@drawable/logo"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar"
>
② 求助:fragment 在横竖屏切换的时候崩溃
fragment若不在manifest里注册横竖屏切换变更通知,在切换时重新oncreateview就会崩溃,layout不能被inflate,提示说找不到,原因有谁知道吗?
③ android 怎么解决横屏之后fragment重叠
Activity的创建会先调用OnCreat(),启动OnStar(),然后显示在界面上OnResume();未完全遮住Activity时调用OnPause(),如被DialogActivity遮住MainActivity;被完全遮住时调用OnStop(),停止Activity,当重新启动时则调用OnRestart();Activity销毁时就调用OnDestroy()。为什么和大家扯这么久Activity的生命周期呢,我们的问题不是“Android横屏开发的老梗---Fragment切换混乱重叠问题”吗?好了,在切入正题之前再和大家说一个问题,当我们要把Activity从竖屏切换到横屏时,Activity会被OnDestroy()销毁掉,再重新创建。这就是我今晚写这篇文章的主要原因了。
Android默认显示是竖屏显示的,所以我们先要设置它为横屏显示,有两种方法:
第一种修改Activity的onResume方法
@Override
protected void onResume() {
/**
* 设置为横屏
*/
④ 针对Android手机平板,横竖屏如何做适配
Fragment
⑤ 为什么切换横竖屏时,Fragment被调用两次
切换的时候会重新设置屏幕,activity会重新加载,所以会被调用,两次可能是你代码有问题
⑥ android中fragment中 怎么切换竖屏
你参考下,要回答这个问题,我们要先讨论一些开发者在Activity生命周期中使用长时间后台任务时遇到的共同困难。然后,我们将介绍常见的两种能解决问题但有不好的方法。最后,我们会用一个示例代码说明推荐的解决方案,它用retained fragment来达到我们的目标。
配置改变&后台线程(Configuration Changes & Background Tasks)
配置发生变化以及销毁和重新创建穿越了整个Activity的生命周期,并且引出一个问题,那就是这些事件的发生是不可预测并且在任何时候都可能触发。并发的后台线程只加剧了这个问题。假设在Activity中启动了一个AsyncTask,然后用户马上旋转屏幕,这会导致Activity被销毁和重新创建。当AsyncTask最后完成它的任务,它会将结果反馈到旧的Activity实例,完全没有意识到新的activity已经被创建了。似乎这不是一个问题,新的Activity实例又会让浪费宝贵的资源重新启动一个后台线程,而不知道旧的AsyncTask已经在运行。由于这些原因,在配置变化的时候我们需要正确、有效地保存在Activity实例的活动对象。
不好的实践:保存整个Activity
可能最有效和最常被滥用的解决方法是通过在Android manifest中设置android:configChanges属性禁止默认的销毁和重新创建行为。这个简单的方法使得它对开发者很有吸引力;然而Google的工程师建议不这么做。主要的担忧是:配置后,需要你在代码中手动处理设备的配置变化。处理配置变化需要你采取很多额外的处理,以确保每一个字符串、布局、绘图、尺寸等与当前设备的配置一致。如果你不小心,那么你的应用程序可能会有一系列与资源定制方面有关的Bug。
另一个Google不鼓励使用它的原因是许多开发者错误地认为,设置android:configChanges = "orientation"(这只是举例说明),会神奇地避免他们的Activity在不可预知的场景中被销毁和重新创建。其实不是这样的。有多种原因可能导致配置发生变化,而不单单是屏幕横竖屏的变化。将你的手机中的内容显示在显示器上,更改默认语言,修改设备默认的字体缩放,这三个简单的例子都有可能触发设备的配置变化。这些事件会向系统发出信号,销毁并重建所有正在运行的Activity,在它们下一次resume的时候。所以设置android:configChanges属性一般不是好的做法。
已经被弃用的方法:重写()
在Honeycomb发布前,跨越Activity实例传递活动对象的推荐方法是重写()和()方法。使用这种方法,传递跨越Activity 实例的活动对象仅仅需要在()将活动对象返回,然后在()中取出。截止API 13,这些方法都已经被弃用,以支持更有效的Fragment的setRetainInstance(boolean)方法。它提供了一个更简洁,更模块化的方式在配置变化的时候保存对象。我们将在下一节讨论以Fragment为基础的方法。
推荐的方法:在Retained Fragment中管理对象
自从Android3.0推出Fragment。跨越Activity保留活动对象的推荐方法是在一个Retained Fragment中包装和管理它们。默认情况下,但配置发生变化时,Fragment会随着它们的宿主Activity被创建和销毁。调用Fragment#setRetaininstance(true)允许我们跳过销毁和重新创建的周期。指示系统保留当前的fragment实例,即使是在Activity被创新创建的时候。不难想到使用fragment持有像运行中的线程、AsyncTask、Socket等对象将有效地解决上面的问题。
⑦ Fragment如何实现左右分屏显示的
1.在AndroidManifest里面先把Activity设置成横屏显示
加粗这块放进去即可,当然不设置也没事哈
这句话:
android:screenOrientation=”landscape”
<activity android:name=".MainActivity" android:screenOrientation="landscape" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
2.再去写布局啦
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.holly.mytest4"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:screenOrientation="landscape" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
再写左侧的fragment布局,取名:left_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" > <ListView android:id="@+id/lv1" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView></LinearLayout>
右侧显示详情的fragment布局,取名right_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv" android:text="测试字体" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:textSize="20sp" /></LinearLayout>
⑧ 当Android旋转屏幕导致横竖屏切换时,如何保存当前Fragment的实例
总结了以下几种情况:
设备旋转时保存Activity的交互状态: onSaveInstanceState();
设备旋转时保存Fragment的交互状态: setRetainInstance(true);
设备旋转时保存WebView的数据:
android:configChanges="keyboardHidden|orientation|screenSize";
设备旋转时保存在自定义View中绘制的图形。
如果Fragment不包含WebView,只是简单的UI View,像是TextView, Button, CheckBox, ImageView... 不建议使用setRetainInstance方法,只需要记住当前fragment的index,然后在设备旋转后根据数据重新实例化一个fragment。因为不包含大量数据,旋转的过程中几乎可以用“无缝切换”来形容。
如果包含WebView还是采用针对WebView的方法(题主的情况)。所以要看情况而定。
⑨ Android fragment 中控制某一个界面全屏与否
这是我写的博客里面的代码,可以参考如下,设置全屏与否:
/**
*
添加横竖屏监听,隐藏图形的菜单控件
*/
@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);
}
}