如何在 Xamarin.Forms 中设置 ContentPage 方向

2023-11-23

我正在使用 Xamarin.Forms 创建一个跨平台应用程序,我的所有ContentPages位于PCL.

我正在寻找一种方法来设置和锁定orientation单个的ContentPage to Landscape,最好不必在每个特定于平台的项目中创建另一个活动。

自从我的ContentPage.Content被设置为ScrollView,我尝试过设置ScrollOrientation to Horizontal,但是这不起作用。

我也尝试过使用RelativeLayout,但我看不到Orientation财产在此。

public class PlanningBoardView : ContentPage //Container Class.
    {
        public PlanningBoardView()
        {
            scroller = new ScrollView ();

            Board = new PlanningBoard();

            scroller.Orientation = ScrollOrientation.Horizontal;
            scroller.WidthRequest = Board.BoardWidth;
            scroller.Content = Board;

            Content = scroller;
        }
    }

我尝试的最后一件事是使用 Xamarin Studio 的 Intellisense 版本和Xamarin 表单 API 文档查看我可用的不同布局,其中没有一个Orientation财产。

我担心做到这一点的唯一方法是创建第二个特定平台Activity就为了这个ContentPage并将方向设置为横向。

虽然这种方法可行,但它使屏幕之间的导航变得更加复杂。

目前该功能正在 Android 中进行测试。


不想这么说,但这只能使用自定义渲染器或特定于平台的代码

在android中,您可以设置要求的方向MainActivity 的属性ScreenOrientation.Landscape.

在 iOS 中,您可以覆盖GetSupportedInterfaceOrientations in the AppDelegate类返回其中之一UIInterfaceOrientationMask值时Xamarin.Forms.Application.Current.MainPage is the ContentPage您感兴趣的。



Android

[assembly: Xamarin.Forms.ExportRenderer(typeof(MyCustomContentPage), typeof(CustomContentPageRenderer))]

public class CustomContentPageRenderer : Xamarin.Forms.Platform.Android.PageRenderer
{
    private ScreenOrientation _previousOrientation = ScreenOrientation.Unspecified;

    protected override void OnWindowVisibilityChanged(ViewStates visibility)
    {
        base.OnWindowVisibilityChanged(visibility);

        var activity = (Activity)Context;

        if (visibility == ViewStates.Gone)
        {
            // Revert to previous orientation
            activity.RequestedOrientation = _previousOrientation == ScreenOrientation.Unspecified ? ScreenOrientation.Portrait : _previousOrientation;
        }
        else if (visibility == ViewStates.Visible)
        {
            if (_previousOrientation == ScreenOrientation.Unspecified)
            {
                _previousOrientation = activity.RequestedOrientation;
            }

            activity.RequestedOrientation = ScreenOrientation.Landscape;
        }
    }
}

iOS

public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations(UIApplication application, UIWindow forWindow)
    {
        if (Xamarin.Forms.Application.Current == null || Xamarin.Forms.Application.Current.MainPage == null)
        {
            return UIInterfaceOrientationMask.Portrait;
        }

        var mainPage = Xamarin.Forms.Application.Current.MainPage;

        if (mainPage is MyCustomContentPage ||
           (mainPage is NavigationPage && ((NavigationPage)mainPage).CurrentPage is MyCustomContentPage) ||
           (mainPage.Navigation != null && mainPage.Navigation.ModalStack.LastOrDefault() is MyCustomContentPage))
        {
            return UIInterfaceOrientationMask.Landscape;
        }

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

如何在 Xamarin.Forms 中设置 ContentPage 方向 的相关文章

  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 在 Android Studio 中,为什么我必须在模拟器中单击“运行应用程序”两次才能启动应用程序?

    在 Android Studio 中 当我按播放按钮在 Android 模拟器上安装并运行应用程序时 大约 5 10 秒后 我在屏幕底部收到一条消息 显示 安装成功 但应用程序实际上并未运行在模拟器上 我必须再次按下播放按钮 这是非常令人沮
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 不同移动设备中的加速度计和陀螺仪精度

    我想使用移动设备的传感器 加速度计 指南针 陀螺仪 这个问题已经在几个地方讨论过 例如 here and here 第一步是确定哪个平台最适合实施此类系统 主要的可能性是三星的 Galaxy Galaxy tab 或 iphone ipad
  • 开放式 Java SMB 服务器实现

    Java 中是否有 SMB CIFS 服务器的开放实现 我能找到的唯一实现是 Alfresco 但它不是开源的 一个相关的问题 假设没有这样的实现 我很惊讶没有一个库提供 SMB 的子集 例如用于简单的文件传输 我的直觉是 实现一个简单的服
  • C/C++ 严格别名、对象生命周期和现代编译器

    我对 C 严格别名规则及其可能的含义感到困惑 考虑以下代码 int main int32 t a 5 float f float a f 1 0f int32 t b a Probably not well defined float g
  • 通过自动更改所有函数和变量名称来模糊生产中的反应代码

    是否有任何库可以帮助模糊生产的反应构建 就像是 const MyComp gt const propa propb useMyfunc return to const xyz gt const yxz zyx zzz return 正确的选
  • IntelliJ(使用 gradle):即使已安装也找不到 Kotlin 插件

    我正在尝试使用 gradle 构建我的项目 但似乎找不到我的 kotlin 插件 即使我确实使用 从磁盘安装插件 添加了它 这是我收到的错误 无法解析配置 classpath 的所有依赖项 找不到 org jetbrains kotlin
  • 将常量值从 _layout.cshtml 传递给 Angular

    好的 我在 ASP Net SPA 项目的 Layout cshtml 中有一个常量变量 我将传递它们 以便 Angular 可以访问它们 我怎样才能做到这一点 例如 这是我试图传递的一个值 var lenderValues Html Ac
  • 如何使用phonegap在iOS应用程序中打开网页?

    我只想在我的 iOS PhoneGap 应用程序中只有一个视图 该视图将是一个网页 我怎样才能用特定的网址加载这个唯一的视图 我想你是通过 javascript 来做到这一点的 如果是的话 怎么做 我不是 html javascript 脚
  • ASP.Net 中的数据缓存

    我需要从一些参考数据中填充一些下拉框 即城市列表 国家列表等 我需要将其填写在各种网络表格中 我认为 我们应该在应用程序中缓存这些数据 这样我们就不会在每个表单上都访问数据库 我是缓存和 ASP Net 的新手 请建议我如何做到这一点 我总
  • 查找窗口失败 - 2 个 Galaxy Nexus 上同一应用程序的不同行为

    我有两部 Galaxy Nexus 手机 这些手机具有相同的固件版本 4 0 2 相同的内部版本号 相同的内核版本 当我使用 Eclipse 将同一个应用程序部署到两部手机时 我看到每部手机都有不同的行为 在一部手机上 一切都按预期进行 在
  • WCF InvalidOperationException:绑定实例已与侦听 URI 关联

    我是 WCF 的初学者 正在学习 Essential WCF 我在使用 ServiceContract NameSpace 和 Name 时遇到问题 当我运行代码时 我捕获了以下 InvalidOperationException 但我无法
  • jQuery的val()方法改变似乎并没有改变DOM

    Doing someId val newValue 不改变 DOM 我可以检索这个值 someId val 但是 DOM 中的元素仍然没有 value 属性 如何设置输入组件的值并更改 DOM 我在用着jQuery 1 5 1 val do
  • 在 R dplyr 中按计数扩展列

    我有一个因子列 我想将每个因素分散到一列中 然后通过每个 id 出现的该因素的计数来填补空白 假设我们有 car lt c a b b b c c a b b b c c type lt c good regular bad good re
  • 适合从扫描条形码 iPhone 应用程序获取产品详细信息的 api?

    正在开发示例条形码扫描仪应用程序 我使用 ZBar API 扫描产品中的条形码 它工作得很好 现在 希望获得扫描条形码的产品 我想从 api 获取产品的以下详细信息 Product Name Product Price Selling fe
  • 从 Spark 作业中调用 JDBC 到 impala/hive 并创建表

    我正在尝试在 scala 中编写一个 Spark 作业 该作业将打开与 Impala 的 jdbc 连接 并让我创建一个表并执行其他操作 我该怎么做呢 任何例子都会有很大的帮助 谢谢你 val JDBCDriver com cloudera
  • MS SQL Server 的“之间”是否包括范围边界?

    例如可以 SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10 选择 5 和 10 还是将它们排除在范围之外 BETWEEN 运算符包含在内 来自在线书籍 如果 BETWEEN 的值返回 TRUE t
  • 从文件中读取和存储任意字节长度整数

    我试图通过在 numpy 中进行解析 数据积累来加速我去年编写的二进制文件解析器 numpy 定义自定义数据结构并将数据从二进制文件提取到其中的能力看起来就像我所需要的 除了这些文件中的某些字段是 非标准 长度 例如 6 字节 的无符号整数
  • 冷http请求和热http请求之间的区别?

    有人可以向我解释两件事吗 冷http请求和热http请求之间的区别 Angular 2 中的 http 请求是冷请求还是热请求 在 Angular 中 从 Http 服务发出的 http 请求是冷的 在这种情况下 冷 意味着只有有人订阅了从
  • 是否可以调试由没有 gdb 标志编译的可执行文件生成的核心文件?

    是否可以调试由没有 gdb 标志编译的可执行文件生成的核心文件 如果是 有任何指示或教程吗 是的你可以 但这并不容易 我给你举个例子 假设我有以下程序foo c main char 0 0 我将编译它并确保没有符号 cc foo c str
  • 更新 SqlAlchemy ORM 中的行

    我正在尝试从数据库获取一行 修改该行并再次保存它 一切都使用 SqlAlchemy My code from sqlalchemy import Column DateTime Integer String Table MetaData f
  • 如何在 Xamarin.Forms 中设置 ContentPage 方向

    我正在使用 Xamarin Forms 创建一个跨平台应用程序 我的所有ContentPages位于PCL 我正在寻找一种方法来设置和锁定orientation单个的ContentPage to Landscape 最好不必在每个特定于平台