自定义Android TimePicker以在.net Maui中使用Spinner

pinkon5k  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(244)

我想在.Net Maui中自定义我的TimePicker,使其在Android上使用Spinner模式(Android中可能的模式)而不是时钟模式。Maui处理程序可以实现这一点吗?我正在寻找类似的东西


# if ANDROID

    Microsoft.Maui.Handlers.TimePickerHandler.Mapper.AppendToMapping("MyCustomization", (handler, view) =>
        {
            ??? handler.PlatformView.TimePickerMode ???;
        });

# endif

或者我能给它设计一下风格吗?

kmbjn2e3

kmbjn2e31#

TimePicker的默认模式是clock,该属性只能在android layout xml中设置,或者在创建时通过调用构造方法设置,所以不能使用Muai Handler设置。
但是您可以使用android样式来更改TimePicker的默认模式。
1.在/Platform/Android/Resource/values文件夹下创建style.xml:

<resources>
  <style name="Spinner" parent="android:Widget.Material.Light.TimePicker">
    <item name="android:timePickerMode">spinner</item>
  </style>
  <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="android:timePickerStyle">@style/Spinner</item>
  </style>
  <style name="Splash" parent="Theme.SplashScreen">
    <item name="windowSplashScreenBackground">@android:color/holo_blue_dark</item>
    <item name="android:windowSplashScreenIconBackgroundColor">#000000</item>
    <item name="windowSplashScreenAnimatedIcon">@drawable/logo</item>
    <item name="windowSplashScreenAnimationDuration">300</item>
    <item name="postSplashScreenTheme">@style/AppTheme</item>
  </style>
</resources>

1.在Android清单.xml中:

<application android:allowBackup="true" android:theme="@style/Splash" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>

1.将名为AndroidX.Core.SplashScreen的软件包添加到您的android部件中。
1.删除MainActivity中的(Theme="@style/Maui.SplashTheme"),并在其OnCreate方法的第一行中添加以下代码:

AndroidX.Core.SplashScreen.SplashScreen.InstallSplashScreen(this);

我做了一个测试示例。当我在Maui.SplashTheme中设置项目时,闪屏不起作用。所以我为应用程序声明了另一个主题。但当我使用另一个控件时,闪屏不起作用。
所以你可以尝试使用上面的解决方案或者只是使用下面的代码并将AppTheme设置为MainActivity的主题。然后在xamarin.android splash screen后面创建一个闪屏。

<resources>
  <style name="Spinner" parent="android:Widget.Material.Light.TimePicker">
     <item name="android:timePickerMode">spinner</item>
  </style>
  <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
     <item name="android:timePickerStyle">@style/Spinner</item>
  </style>
</resources>

相关问题