Android + XAMARIN + 强制屏幕保持“纵向”模式(使用 AndroidManifest)

2024-05-03

我在这里阅读了这个问题的一些答案,但不知何故我无法让它发挥作用。

我的 AndroidManifest.xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mWidas2.mWidas2" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
  <uses-sdk />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <application android:label="WQS" android:icon="@drawable/temporaryIcon">
    <activity android:name=".MainActivity"
    android:configChanges="keyboard|keyboardHidden|orientation" />
  </application>
</manifest>

我仍然可以切换到横向模式,并且由于横向模式下的布局变得相当难看,我想避免这种情况。非常感谢帮助。

可能很重要:我正在使用最新的 Xamarin 开发应用程序


您可以标记您的activity to be portrait使用类属性:

[Activity (Label = "MyMainScreen", MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait)]
public class Activity1 : Activity

这是强制 Activity 始终基于纵向的唯一方法,因为 Xamarin 会自动生成类名,而无需对类名进行硬编码。

Update:

我收到了很多关于此 Q/A 的 IM 问题,因此我正在扩展为什么使用清单方法不起作用的答案。

Xamarin 会自动为您的活动生成一个完全限定的类名称,而这些活动没有Name分配给您的活动类别的属性。

如果您查看来自 Xamarin Android 的签名/生成的清单.apk你会看到一个类名,例如:

md5d2519388ea1895e3e3594794d2e0c4ce.MainActivity

由于您使用点名称类标识符来标记清单,因此会将包名称作为前缀:

<activity android:name=".MainActivity"

The 完全合格类名不匹配,因为以句点开头的类名将使用包名称作为前缀,而这些前缀永远不会与自动生成的类名匹配。

您可以使用以下方法解决此自动生成的完全限定类名Name你的元素Activity属性以防止创建自动生成的名称,即:

[Activity(Label = "PlayScriptStarling", Name = "com.sushihangover.playscriptstarling.MyBigBadGameEveryOneShouldPlay", MainLauncher = true, Icon = "@mipmap/icon")]

现在,假设您的包名称是“com.sushihangover.playscriptstarling”,使用:

<activity android:name=".MyBigBadGameEveryOneShouldPlay"

一旦清单中的扩展与代码中的名称相匹配,清单中的名称将用作类名称。

问题是,如果你的包名称发生变化,你就会破坏你的dot class names在你的清单中。所以使用ScreenOrientation = ScreenOrientation.Portrait是一种更简洁的分配方向的方法,不需要您为每个活动分配完全限定的类名称,并且如果包名称更改也不会中断。

注:Name内的元素Activity类属性不支持dot class names并且需要使用完全扩展的类名。这已作为功能请求提交给 Xamarin...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android + XAMARIN + 强制屏幕保持“纵向”模式(使用 AndroidManifest) 的相关文章

随机推荐