如何覆盖库中活动的screenOrientation属性

时间:2016-09-30 07:15:50

标签: android android-manifest screen-orientation

这个问题的标题并不完全反映我的问题,因为它过于冗长,我已经修剪了它。抱歉我的英语不好。

好的,

我正在使用一个有活动的库,我在我的应用程序中使用该活动。这种活动的方向在平板电脑上运行良好,即横向和纵向,但在手机中它坚持纵向模式。

当我看到该库的清单文件时,它就像

<activity
   android:name="DrawingActivity"
   android:configChanges="orientation|keyboardHidden|screenSize"
   android:finishOnTaskLaunch="true"
   android:screenOrientation="unspecified">

在帖子Android Orentation Changes中。我开始知道应该像android:screenOrientation =“fullSensor”一样工作。

现在我试图覆盖活动的screenOrientation属性,如here

使用tools:replace属性,但仍无效。请任何人帮我解决这个问题。

这就是我想要实现的目标。

<activity
   android:name="DrawingActivity"
   android:configChanges="orientation|keyboardHidden|screenSize"
   android:finishOnTaskLaunch="true"
   android:screenOrientation="fullSensor"
   tools:replace="android:screenOrientation">

如果我的问题不清楚/过于宽泛,请告诉我我会编辑我的问题。

此致

5 个答案:

答案 0 :(得分:1)

<activity
   android:name="DrawingActivity"
   android:configChanges="orientation|keyboardHidden|screenSize"
   android:finishOnTaskLaunch="true"
   android:screenOrientation="fullSensor"
   tools:replace="screenOrientation">

请勿使用android:screenOrientation而是使用screenOrientation

答案 1 :(得分:0)

您可以使用tools:node="merge",例如:

<activity android:name="DrawingActivity"
    android:screenOrientation="fullSensor"
    tools:node="merge">
</activity>

此节点将与现有节点合并,并覆盖所有重复项。

有关此的更多详细信息,请参见https://developer.android.com/studio/build/manifest-merge#node_markers

答案 2 :(得分:0)

这将起作用:

  

tools:node =“替换”

您的情况应该是:

<activity  
   android:name="DrawingActivity"
   android:screenOrientation="fullSensor"
   tools:node="replace" />

它将替换库中添加的所有attr,在这种情况下,该属性将从“ unspecified”到“ fullSensor”为“ screenOrientation”。

答案 3 :(得分:0)

尝试这个:-

<activity android:name="DrawingActivity"
            tools:replace="android:screenOrientation"
            android:screenOrientation="fullSensor">
</activity>

答案 4 :(得分:-1)

将库导入为模块而不是使用Gradle,因此您可以更改代码