获取景观布局的ID

时间:2015-07-03 05:59:54

标签: android android-layout

[编辑]我会尽量简化我的问题:

当在任何其他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,而无需重命名。好的,我放弃了。

1 个答案:

答案 0 :(得分:1)

您将同名设置为protraitlandscape布局。 Android可以识别它所处的模式,并根据它选择的模式 必需的layout

如果您将main.xml放在layout/res/layout-land/main.xmllayout/res/main.xml中,则可以将布局设置为setContentView(R.layout.R.layout.main);android会识别设备模式并选择正确的设置

如果要手动将其设置为横向模式: 您可以AndroidManifestandroid: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以获取更多信息