平板电脑的肖像(Android-Layout)

时间:2011-10-05 22:11:27

标签: java android android-layout orientation

所以我正在为Android制作应用程序,我想强制平板电脑的横向定位和手机的纵向定位。然而,似乎我只能从我所看到的方向进行定位锁定,这会导致想要两个不同的设备方向的目的。

平板电脑:风景 电话:肖像

更具技术性。

我在“res / layout-xlarge-land”中有一个用于在平板电脑上进行美化的布局,我在“res / layout”中有原始布局,我只想明确地使用layout-xlarge-land作为平板电脑。没有别的,基本上只使用xlarge设备的横向。

谢谢!

5 个答案:

答案 0 :(得分:42)

根据设备密度设置特定方向可能无效,因为手机的密度高于平板电脑。

我所做的是通过在清单文件中的activity标记中设置属性来禁用设备的方向传感器,如下所示:

android:screenOrientation="nosensor"

运行应用时,默认情况下会为手机设置纵向方向,为平板电脑设置横向(因此它会从layout-xlarge-land中选择xml文件)。由于您已设置方向锁定,因此它仍保持此方向。

答案 1 :(得分:2)

您可以测量设备的实际尺寸(以英寸为单位),然后使用以下方式以编程方式设置方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

要获取设备的物理尺寸,您可以使用已发布的代码here

它不是100%准确,但它足以决定设备的王者在运行应用程序。

答案 2 :(得分:0)

我不完全确定你在说什么,但看起来你应该只测量分辨率并采取相应行动。我的意思是,除了分辨率不同之外,你怎么知道它是手机还是平板电脑?

答案 3 :(得分:0)

使用过

的人
onChange = data => {
//put your condition liek

if (data == 1) {
  var myOptions = t.update(this.state.options, {
    fields: {
      enddate: {
        disabled: { $set: false },
        minimumDate: {
          $set:
            data.startdate < data.enddate
              ? data.startdate
              : moment(new Date(data.startdate)).toDate()
        }
      }
    }
  });
}

并且没有单独工作,我在基本活动中除了此片段外还使用了它

android:screenOrientation="nosensor"

答案 4 :(得分:-2)

在“layout-large”文件夹布局中的布局菜单上设置名为llTablet的布局,在“layout”文件夹中的布局菜单上设置llPhone布局。通过菜单参考用户正在进入的第一个布局。然后检查您是否可以参考它。如果你不能引用llPhone那么它的平板电脑。

llPhone = (LinearLayout) findViewById (R.id.llPhone)
if (llPhone == null) {
 tablet = true;
}
else {
 tablet = false;
}