在我的Android布局中,我有一个TextView.此TextView显示一个相当大的spannable文本,它可以滚动.现在,当手机旋转时,视图将被销毁并创建,我必须再次将TextText()设置为TextView,将滚动位置重置为开头.
我知道我可以使用getScrolly()和scrollTo()来滚动到像素位置,但是由于View宽度的变化,线变得更长,并且位于像素pos 400的线现在可能是250.所以这不是很很有帮助.
我需要一种方法在onDestroy()中的TextView中找到第一个可见行,然后在旋转后使TextView滚动到这段特定文本.
有任何想法吗?
我有一个活动开始一些asynctasks.我希望这些任务停止,当我的Activity被"正常"销毁时(比如调用finish()/用户按下后退按钮/等),但是当用户只旋转设备时继续运行.
取消这些任务,并处理旋转工作正常,我只是无法将两者结合起来.
那么有没有办法告诉"onDestroy()"回调期间,由于配置更改(旋转),或者由于某些其他原因(例如后退按钮),Activity被销毁?
我正在构建一个具有UIWebView的iOS 5/6应用程序.它加载了我嵌入在我的应用程序中的一些HTML.
现在,当我旋转设备时,WebView会改变其大小(因为我希望它填满整个屏幕宽度).
然后它变得奇怪:一些内容被放大,一些内容没有扩大规模.请参阅此图片,其中包含一些示例文本:
如您所见,标题(H6)保持不变,而段落按比例放大.有没有人知道如何防止这种情况?我希望html在横向上看起来和在纵向模式下看起来一样.
我已经尝试将视口缩放设置为1:<meta name="viewport" content="initial-scale=1.0,max-scale=1.0">
但这没有用.身体的font-size风格设置为14px,但改变14pt或百分比也没有区别.设置width身体100%也没有帮助.
奇怪的是,删除<br/>文本中的换行符()会修复它,但是我需要换行符,因此没有解决方案.
那唯一做的工作是重装的方向变化后的UIWebView的内容,但是这并不妨碍它找错时旋转,并将其重置任何滚动,用户可能已经完成.
有任何想法吗?
当iOS应用旋转时,当应用介于纵向和横向之间时,它将显示黑色背景。是否可以将此颜色从默认的黑色更改为白色?更改UIWindow的背景颜色将无济于事。这是旋转过程中Safari中黑色背景的示例:

我LinearLayout在屏幕旋转后返回对象返回的nullPointerException异常, 虽然我在onCreate()super.onCreate(null)中传递null ; .我知道Activity必须被销毁并重新创建旁边我传递的savedInstanceState = null表示Activity应该在旋转后开始,因为它是第一次启动,为什么我在轮换后得到这个Exception?
onCreate()片段,其中LinearLayout对象名为historyText
LinearLayout historyText ; // this return exception if it used after rotation .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
setContentView(R.layout.activity_main);
historyText = (LinearLayout) findViewById(R.id.historyLayoutText);
Log.e("HISTORYVISIBILITY", "VISIBILITY = "+historyText.getVisibility());
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
database = new Database(this);
Bundle extras = getIntent().getExtras();
intent = extras.getInt("activity");
p = new Progress();
getSupportFragmentManager().beginTransaction()
.add(R.id.group, p)
.commit();
orientation = getRotation();
switch (orientation){
case "p" :
addPlus();
}
}
Run Code Online (Sandbox Code Playgroud)
logcat的
10-07 22:21:24.365: E/AndroidRuntime(7768): …Run Code Online (Sandbox Code Playgroud) android nullpointerexception screen-rotation android-linearlayout
这可能是另一个问题的重复,我不确定.我读过类似的问题,但要么无法理解它,要么无法成功应用给定的解决方案.
我创建了一个包含多个选项卡的应用程序.大多数选项卡使用ASyncTask在用户滑入选项卡时更新数据.但是,当AST仍然在运行时有关活动的某些内容发生变化(这种情况发生很多;例如,当用户旋转屏幕或使用后退按钮退出时),应用程序将强制关闭(ANR).
这是我在LogCat中看到的情况:
10-30 11:30:01.422: E/AndroidRuntime(4687): FATAL EXCEPTION: main
10-30 11:30:01.422: E/AndroidRuntime(4687): java.lang.NullPointerException
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.appconstructor.khcreates.Core$refreshList.onPostExecute(Core.java:913)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.appconstructor.khcreates.Core$refreshList.onPostExecute(Core.java:1)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask.finish(AsyncTask.java:631)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.Looper.loop(Looper.java:137)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-30 11:30:01.422: E/AndroidRuntime(4687): at java.lang.reflect.Method.invokeNative(Native Method)
10-30 11:30:01.422: E/AndroidRuntime(4687): at java.lang.reflect.Method.invoke(Method.java:511)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-30 11:30:01.422: E/AndroidRuntime(4687): at dalvik.system.NativeStart.main(Native Method) …Run Code Online (Sandbox Code Playgroud) android screen-rotation android-asynctask android-anr-dialog
我遇到设备轮换问题.除了一个视图,我显示公司启动画面,我想将所有剩余的应用程序视图锁定到纵向显示.在项目设置中,支持的方向是Portrait和LandscapeLeft.在"公司飞溅"中它工作正常,无论我如何旋转设备,视图旋转都锁定在LandscapeLeft中.在我将设备向左旋转的所有其他视图中,视图会改变而不是保持纵向显示.这些方法甚至没有开火?如果我从项目中支持的方向中删除横向,则会拧紧"公司启动"视图.我尝试改变shouldAutorotate回归NO,但这没有帮助.试图通过这里发布的建议,但这没有帮助.如果我将以下代码放入我的AppDelegate.m,一切都被锁定为纵向模式,并且"公司启动"在访问时崩溃.
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
Run Code Online (Sandbox Code Playgroud)
除了一个屏幕外,无论设备如何旋转,如何将视图锁定为纵向模式?
**来自'公司飞溅'视图的方法.再次,应该是这样的工作.
-(NSInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft;
}
Run Code Online (Sandbox Code Playgroud)
**来自所有其他视图的方法,当我不希望它们旋转时,这些视图会旋转出来
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// IOS5 Only returning that it should rotate to potrait
return (interfaceOrientation == UIDeviceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
// forcing the rotate IOS6 Only
return YES;
}
-(NSInteger)supportedInterfaceOrientations
{
// return number or enum IOS6 Only
return UIInterfaceOrientationMaskPortrait;
}
Run Code Online (Sandbox Code Playgroud)
我想也许可能是因为UITabBarController是根控制器而我在ViewController中呢?这些方法甚至没有开火?
我正在编写一个在横向模式下运行的android应用程序.当我将设备旋转180度时,它保持原样.我能做什么?改变以及它可以在两个水平方向上运行的位置?
我正在为一本书建立类似读者的东西.当用户旋转手机时,我想增加字体大小.我用a UITableView来显示文本块.
问题是,增加字体大小会增加表视图中行的高度,如果我在纵向模式下读取段落320,我在横向模式下会得到280或类似的东西.
我已使用以下代码设置了旋转通知侦听器:
UIDevice *device = [UIDevice currentDevice];
[device beginGeneratingDeviceOrientationNotifications];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:device];
Run Code Online (Sandbox Code Playgroud)
并尝试在旋转之前保存最后一个段落索引,然后在旋转后向下滚动到它,但我似乎无法达到预期的效果.
什么是处理这种情况的最佳方法,我在哪里实际实现"之前"和"之后"轮换状态?
我希望它可以在iOS 4+上运行.
我有以下代码可以在iPhone上正常运行,但不能在iPad上运行。它应该仅在此ViewController上锁定方向的横向方向并禁用自动旋转(对于整个应用程序不禁用-请勿更改project / info.plist文件中的属性):
override var shouldAutorotate : Bool {
return false
}
Run Code Online (Sandbox Code Playgroud)
并在viewDidLoad():
let landscapeValue = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(landscapeValue, forKey: "orientation")
Run Code Online (Sandbox Code Playgroud)
如何将方向锁定为横向并禁用当前ViewController的旋转(就像它已经在iPhone上正常运行一样)?
我的规格:
XCode-9.1内部版本9B55
迅捷-4.0.2
在iPad Air上进行了测试-iOS 10.3.3
screen-rotation ×10
android ×5
ios ×4
iphone ×2
orientation ×2
eclipse ×1
ipad ×1
landscape ×1
portrait ×1
scroll ×1
swift ×1
textview ×1
uitableview ×1
uiwebview ×1
xcode ×1