如何增加开关控件 Xamarin 表单的大小?
How to increase size of switch control Xamarin forms?
我最近刚开始使用 Xamarin Forms,并且有一项任务是将工作中的 iOS 项目切换到 Droid。这是一个多平台项目,所以我在共享项目中创建开关,但试图在 .Droid styles.xml 或自定义渲染器中管理它的样式。我需要为平板电脑提供更大的控件。
使用 styles.xml,我能够使用此行更改开关控件的宽度:
<item name="switchMinWidth">120dp</item>
但据我所知,无法以这种方式更改控件的高度。我试过使用自定义渲染器并使用了控件 (Android.Switch.Widget) 的 SetHeight、SetMinHeight 和 SetMinimumHeight 方法,但没有任何效果。
开关目前的样子如下:
我也试过在 xaml 本身中执行 HeightRequest,但它不会改变控件的实际高度。有什么办法可以让这些开关更高一点吗?
How to increase size of switch control Xamarin forms?
Switch
高度由<switch android:track="@drawable/shape_mythumb".../>
控制,轨道的高度决定Switch
的整体高度。所以你可以在你的自定义 SwitchRenderer
中添加这个 属性 :
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布局,您可以随意绘制形状。
示例:
track.xml
<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
<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
<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>
我最近刚开始使用 Xamarin Forms,并且有一项任务是将工作中的 iOS 项目切换到 Droid。这是一个多平台项目,所以我在共享项目中创建开关,但试图在 .Droid styles.xml 或自定义渲染器中管理它的样式。我需要为平板电脑提供更大的控件。
使用 styles.xml,我能够使用此行更改开关控件的宽度:
<item name="switchMinWidth">120dp</item>
但据我所知,无法以这种方式更改控件的高度。我试过使用自定义渲染器并使用了控件 (Android.Switch.Widget) 的 SetHeight、SetMinHeight 和 SetMinimumHeight 方法,但没有任何效果。
开关目前的样子如下:
我也试过在 xaml 本身中执行 HeightRequest,但它不会改变控件的实际高度。有什么办法可以让这些开关更高一点吗?
How to increase size of switch control Xamarin forms?
Switch
高度由<switch android:track="@drawable/shape_mythumb".../>
控制,轨道的高度决定Switch
的整体高度。所以你可以在你的自定义 SwitchRenderer
中添加这个 属性 :
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布局,您可以随意绘制形状。
示例:
track.xml
<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
<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
<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>