您可以标记您的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...