java – 使用values.xml设置Android Activity屏幕方向

我正在尝试使用res / values中的XML文件中的值设置活动屏幕方向.我想这样做是因为,或多或少,我需要平板电脑(风景)和智能手机(肖像)相同的活动.

第一次尝试

表现:

norientation="@string/defaultOrientation"/>

config.xml文件

但是使用此设置应用程序将不会出现在设备上,它将返回此错误

java.lang.NumberFormatException: Invalid int: “portrait”

第二

好的,所以我只是把它改成了这个

表现:

norientation="@integer/defaultOrientation"/>

config.xml文件

我使用了1,因为ActivityInfo.SCREEN_ORIENTATION_PORTRAIT == 1.

但这也不起作用.似乎我可以修改一些值,如应用程序/活动名称,但不是屏幕方向?

我知道我可以通过代码解决它,但由于某种原因,它认为这也应该可以通过XML值文件获得.

以某种方式可以通过XML值实现它?

最佳答案
你的第二个exlanation对我来说同样的问题,我使用了你不想要的代码解决方法.

我在res文件夹下添加了4个值文件夹. “values”,“values-v11”,“values-v14”和“values-sw720dp”

所有值文件夹都有“integers.xml”.

“值”和“值-v14”具有值1,其是纵向;
< integer name =“portrait_if_not_tablet”> 1< / integer>.

“values-v11”和“values-sw720dp”具有值2,即用户方向;
< integer name =“portrait_if_not_tablet”> 2< / integer>.

在Manifest文件中,activity有一个属性,如;
机器人:screenorientation = “@整数/ portrait_if_not_tablet”.

所有“值”,“值-v11”,“值-v14”都按预期工作,但“values-sw720dp”!

在调试时我意识到portrait_if_not_tablet的值在sw720dp设备(带有API 16)上与getResources().getInteger(R.integer.portrait_if_not_tablet)一样,但是当我通过getRequestedOrientation()检查当前方向的值时,我得到了一个不同的值.

int requestedOrientation = getResources().getInteger(R.integer.portrait_if_not_tablet);
int currentOrientation = getRequestedOrientation();
if (currentOrientation != requestedOrientation) {
    setRequestedOrientation(requestedOrientation);
}

所以我在我的活动的onCreate方法上使用了一个代码块来解决这个问题.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...