首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何增加开关控制Xamarin窗体的大小?

如何增加开关控制Xamarin窗体的大小?
EN

Stack Overflow用户
提问于 2017-11-01 13:28:52
回答 1查看 3.3K关注 0票数 1

我最近刚开始使用Xamarin,并负责将正在工作的iOS项目转换为Droid。这是一个多平台项目,所以我在共享项目中创建开关,但尝试用.Droid styles.xml或自定义呈现器管理它的样式。对于平板电脑,我需要更大一点的控制。

使用styles.xml,我能够使用以下行更改开关控件的宽度:

代码语言:javascript
复制
<item name="switchMinWidth">120dp</item>

但据我所知,没有办法以这种方式改变控制的高度。我尝试过使用自定义呈现程序,并使用了控件( SetHeight,Android.Switch.Widget)的SetMinimumHeight、SetMinHeight和SetMinimumHeight方法,但是没有什么效果。

下面是当前开关的样子:

https://imgur.com/XIPp6vV

我也尝试过在xaml本身中执行一个HeightRequest,但是它不会改变控件的实际高度。我能做些什么让这些开关再高一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-02 07:18:40

如何增加开关控制Xamarin窗体的大小?

Switch高度由<switch android:track="@drawable/shape_mythumb".../>控制,轨道的高度决定了Switch的总体高度。因此yo可以在您的自定义SwitchRenderer中添加此属性:

代码语言:javascript
复制
public class MySwitchRenderer : SwitchRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Switch> e)
    {
        base.OnElementChanged(e);
        if(Control != null)
        {
            Control.SetTrackResource(Resource.Drawable.track);
        }
    }
}

您需要自定义一个跟踪布局,您可以任意绘制形状。

示例:

track.xml

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item
      android:drawable="@drawable/switch_track_on"
      android:state_checked="true"/>

  <item
      android:drawable="@drawable/switch_track_off"
      android:state_checked="false"/>

</selector>

switch_track_on.xml

代码语言:javascript
复制
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

  <corners
       android:radius="15dp" />
  <size
       android:width="75dp"
       android:height="25dp" />
  <solid
      android:color="#6decacec" />

</shape>

switch_track_off.xml

代码语言:javascript
复制
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

  <corners
      android:radius="15dp" />
  <size
      android:width="75dp"
      android:height="25dp" />
  <solid
      android:color="#6db3b1b3" />
</shape>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47056004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档