[编辑]我会尽量简化我的问题:
当在任何其他res / layout ... /文件夹中存在相同的命名布局时,是否可以在res / layout-land /中获取对布局的引用?
我有一个布局/res/layout/main.xml,我有一个布局/res/layout-land/main.xml。 在某些情况下,我想手动将布局设置为横向布局。 如何通过R.layout访问横向布局,以便我可以手动设置横向布局:
setContentView(R.layout.<<main(landscape)>>);
不将其重命名为不同的名称。
对于downvoter,我尝试了force layout这里的解决方案,但这对旧的Nexus 7没有帮助,在某些情况下它会被识别为手机。
[编辑]这与我的问题无关,但对于所有不理解我的问题的失败选民,目前我使用此代码:
if(getResources().getBoolean(R.bool.is_phone)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
setContentView(R.layout.activity_fullscreen);
但我想使用这样的代码:
if(getResources().getBoolean(R.bool.is_phone)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_fullscreen);
}
else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_fullscreen_land);
}
(不,这不是错误,布局名称后缀为_land,我想自己选择平板电脑布局,不要让Android决定为平板电脑选择哪种布局。)
我的问题是,我可以参考布局res / layout-land / activity_fullscreen,而无需重命名。好的,我放弃了。
答案 0 :(得分:1)
您将同名设置为protrait
和landscape
布局。
Android
可以识别它所处的模式,并根据它选择的模式
必需的layout
。
如果您将main.xml
放在layout/res/layout-land/main.xml
和layout/res/main.xml
中,则可以将布局设置为setContentView(R.layout.R.layout.main);
,android
会识别设备模式并选择正确的设置
如果要手动将其设置为横向模式:
您可以AndroidManifest
将android:orientation="landscape"
添加到要activities
landscape mode
,从tablet layout
开始执行此操作
要将其设置为不同的平板电脑尺寸,您可以根据它创建不同的文件夹:
如果600dp of screen width
至少需要layout-sw600dp/
,则应将其放在<snippet>
<content><![CDATA[
(function (\$) {
var defaults = {};
function ${1:name}(${2:element}, ${3:options}) {
this.config = \$.extend({}, ${2:defaults}, ${3:options});
this.element = element;
this.init();
}
${1:NAME}.prototype.init = function () {
};
\$.fn.${1:name} = function (options) {
new ${1:NAME}(this.first(), options);
return this.first();
};
}(jQuery));
]]></content>
<tabTrigger>jqp</tabTrigger>
<scope>source.js</scope>
</snippet>
检查this link以获取更多信息