.Net MAUIではソフトキーボードを非表示にする方法として、HideSoftInputAsyncが用意されています。しかし、この方法はEntryだけしか利用できません。
当記事では、Entry以外でもソフトキーボードを非表示にする方法を紹介していきます。
紹介環境
当記事は以下の環境で作成しています。
開発環境
- Visual Studio 2026
- .Net 10
- Android 14
対応方法
Androidでキーボードを非表示にする場合、InputMethodManagerを利用します。
実装例は以下のようになります。PlatformViewからプラットフォームのビューを取得して、WindowTokenを取得するようにしています。
// プラットフォームのビューを取得します。
// 「sample」は、XAMLで定義されたコントロールの名前です。適切なコントロール名に置き換えてください。
if (sample.Handler?.PlatformView is Android.Views.View view)
{
// キーボードを閉じる
InputMethodManager? inputMethodManager = Platform.AppContext.GetSystemService(Context.InputMethodService) as InputMethodManager;
inputMethodManager?.HideSoftInputFromWindow(view.WindowToken, HideSoftInputFlags.None);
}利用方法
利用方法は、以下のようになります。ここではWebViewを利用しています。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SampleApp.Pages.SamplePage1"
Title="SamplePage1">
<Grid RowDefinitions="auto,*">
<Button
Grid.Row="0"
Text="キーボードを閉じる"
Clicked="Button_Clicked" />
<WebView
Grid.Row="1"
x:Name="sample">
<WebView.Source>
<HtmlWebViewSource>
<HtmlWebViewSource.Html>
<![CDATA[ <input type="text" /> ]]>
</HtmlWebViewSource.Html>
</HtmlWebViewSource>
</WebView.Source>
</WebView>
</Grid>
</ContentPage>#if ANDROID
using Android.Content;
using Android.Views.InputMethods;
#endif
// 名前空間はプロジェクトに合わせてください。
namespace SampleApp.Pages;
public partial class SamplePage1 : ContentPage
{
public SamplePage1()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
#if ANDROID
// プラットフォームのビューを取得します。
// 「sample」は、XAMLで定義されたコントロールの名前です。適切なコントロール名に置き換えてください。
if (sample.Handler?.PlatformView is Android.Views.View view)
{
// キーボードを閉じる
InputMethodManager? inputMethodManager = Platform.AppContext.GetSystemService(Context.InputMethodService) as InputMethodManager;
inputMethodManager?.HideSoftInputFromWindow(view.WindowToken, HideSoftInputFlags.None);
}
#endif
}
}動作イメージ

終わりに
Androidの時だけキーボードが残ってしまうことがあり、今回の方法で対応してみました。この記事が役に立てば幸いです。