如何在axml中设置只用于tablet的按钮高度?
<Button android:id="@+id/logout_button"
android:background="@drawable/bordered_button"
android:textColor="@color/primary"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10"
android:textSize="18sp"
android:layout_marginLeft="0.0dp"
android:layout_marginTop="0.0dp" />
3条答案
按热度按时间fcy6dtqo1#
由于您似乎使用的是原生Xamarin.Android,我建议最好的方法是检查原生Android documents是否支持屏幕大小。
这样做时,您将基于您的使用情形获得多种解决方案:
*使用约束布局
*创建替代布局等等
如果您有疑问,请随时与我联系。
c9x0cxw02#
您应该使用
OnIdiom
XAML元素:OnIdiom
将允许您为不同的习惯用法设置不同的值。您只需要为要设置的属性创建一个新元素(这里是<Button>
元素的Height
属性)。由于Height
属性的类型为double
,因此您需要为TypeArguments
设置x:Double
。tzdcorbm3#
您可能听说过Xamarin.Forms.Device类,该类提供的信息可帮助您在每个平台上自定义布局和功能。它提供的信息可用于了解应用程序是在Windows、iOS还是Android上运行。你可能已经在很多例子中看到了(最常见的用法是在页面顶部添加额外的填充仅在iOS中,以避免状态栏)。在这个类中,还有一个成语枚举,它可以告诉用户有关设备类型的信息,如电话、平板电脑或UWP。有时是桌面应用程序。你可以使用这个类来提供设备类型特定的逻辑。代码如下所示:
这段代码向平板设备的名为"mainGrid"的Grid添加更多的左填充和右填充。
现在,如果您熟悉XAML,那么您可能会问到一个问题:如何在XAML中设置相同的逻辑?实际上,有一种方法可以完全在XAML中设置此逻辑。
一旦开始在整个应用中应用类似的更改,在XAML或代码中使用Device.Idiom有时会变得重复且效率低下。通过样式,可以重用XAML的任何部分,包括Device.Idiom。例如,假设你想为一个页面创建一个"手机样式"和一个"平板样式",只需要为每种设备大小设置合适的填充,你可以简单地为每种样式定义一个样式,然后在每一个页面上设置。然后,当您要更改任一样式的某个方面时,可以在一个位置进行更改。样式是XAML的一项功能,它允许您将属性设置封装在一个位置,并在整个应用程序中重用它们。您可以创建应用于同一类型的所有控件的隐式样式。或具有唯一键并分配给特定控件的显式样式。样式的作用域是单个页面还是全局,这取决于您定义样式的位置。我不打算更深入地解释样式是如何工作的,所以请查看Xamarin.Forms文档了解更多。让我们看看如何将样式与Device.Idiom一起使用。按照我上面提到的所有页面的phone样式和tablet样式的示例,这里我已经在我的app.xaml文件中使用键定义了我的两个样式(这创建了显式的全局样式)。
请注意,我的样式实际上针对的是Grid而不是Page,但我认为您也可以针对Page对象,假设它具有需要修改的所有属性,然后在每个具有Grid的页面上,我希望将其Style设置为全局样式,并可以使用Device.Idiom相应地进行设置。
参考:Building adaptive applications
在这另一个post中,您可以找到另一种方式来处理不同类型分辨率的应用程序布局。
现在,如果你只能在Android上处理这个,我建议你看看这个Google Android Documentation,你可以为不同的屏幕大小指定不同的风格,并创建单独的布局文件。