入力
.NET マルチプラットフォーム アプリ UI (.NET MAUI) Entry を使用すると、1 行のテキストを入力および編集できます。 さらに、Entry はパスワード フィールドとして使用できます。
Entry には、次のプロパティが定義されています。
ClearButtonVisibility
型のClearButtonVisibility
は、クリア ボタンを表示するかどうかを制御します。これにより、ユーザーはテキストをクリアできます。 このプロパティの既定値は、クリア ボタンが表示されないようにします。TextAlignment
型のHorizontalTextAlignment
は、テキストの水平方向の配置を定義します。bool
型のIsPassword
は、入力されたテキストをエントリで視覚的に隠すかどうかを指定します。- ICommand 型の
ReturnCommand
は、リターン キーが押されたときに実行されるコマンドを定義します。 object
型のReturnCommandParameter
は、ReturnCommand
のパラメーターを指定します。ReturnType
型のReturnType
は、戻るボタンの外観を指定します。TextAlignment
型のVerticalTextAlignment
は、テキストの垂直方向の配置を定義します。
これらのプロパティは、BindableProperty オブジェクトが基になっています。つまり、これらは、データ バインディングの対象にすることができ、スタイルを設定できます。
さらに、Entry は、ユーザーがリターン キーを押して Entry 内のテキストを確定したときに発生する Completed
イベントを定義します。
Entry は InputView クラスから派生し、このクラスから次のプロパティを継承します。
double
型のCharacterSpacing
は、入力されたテキストの文字間の間隔を設定します。int
型のCursorPosition
は、エディター内でのカーソルの位置を定義します。FontAttributes
型のFontAttributes
は、テキスト スタイルを決定します。bool
型のFontAutoScalingEnabled
は、テキストがオペレーティング システムで設定されたスケーリング設定を反映するかどうかを定義します。 このプロパティの既定値はtrue
です。string
型のFontFamily
は、フォント ファミリを定義します。double
型のFontSize
は、フォント サイズを定義します。bool
型のIsReadOnly
は、ユーザーがテキストを変更できないようにするかどうかを定義します。 このプロパティの既定値はfalse
です。bool
型のIsSpellCheckEnabled
は、スペル チェックが有効かどうかを制御します。bool
型のIsTextPredictionEnabled
は、テキスト予測と自動テキスト修正が有効かどうかを制御します。Keyboard
型のKeyboard
は、テキストを入力するときに表示されるソフト入力キーボードを指定します。int
型のMaxLength
は、入力の最大長を定義します。string
型のPlaceholder
は、コントロールが空の場合に表示されるテキストを定義します。- Color 型の
PlaceholderColor
は、プレースホルダー テキストの色を定義します。 int
型のSelectionLength
は、コントロール内で選択したテキストの長さを表します。string
型のText
は、コントロールに入力されたテキストを定義します。- Color 型の
TextColor
は、入力したテキストの色を定義します。 TextTransform
型のTextTransform
は、入力されたテキストの大文字と小文字を指定します。
これらのプロパティは、BindableProperty オブジェクトが基になっています。つまり、これらは、データ バインディングの対象にすることができ、スタイルを設定できます。
さらに、InputView は、Entry 内のテキストが変更されたときに発生する TextChanged
イベントを定義します。 TextChanged
イベントに付随する TextChangedEventArgs
オブジェクトには NewTextValue
と OldTextValue
プロパティがあり、それぞれ新しいテキストと古いテキストを指定します。
Entry でフォントを指定する方法については、「フォント」をご覧ください。
入力を作成する
次の例は、Entry を作成する方法を示しています。
<Entry x:Name="entry"
Placeholder="Enter text"
TextChanged="OnEntryTextChanged"
Completed="OnEntryCompleted" />
同等の C# コードを次に示します。
Entry entry = new Entry { Placeholder = "Enter text" };
entry.TextChanged += OnEntryTextChanged;
entry.Completed += OnEntryCompleted;
次のスクリーンショットは、Android での Entry の結果を示しています。
Note
iOS では、ソフト入力キーボードは、フィールドが画面の下部付近にある場合にテキスト入力フィールドにかぶることがあり、テキストの入力が困難になります。 ただし、.NET MAUI iOS アプリでは、ソフト入力キーボードがテキスト入力フィールドにかぶる場合にページが自動的にスクロールされ、フィールドがソフト入力キーボードの上に配置されます。 この既定の動作は、Microsoft.Maui.Platform
名前空間内の KeyboardAutoManagerScroll.Disconnect
メソッドを呼び出すことで無効にすることができます。 無効にした後、KeyboardAutoManagerScroll.Connect
メソッドを呼び出すと、動作をもう一度有効にすることができます。
入力されたテキストには、Text
プロパティを読み取ることでアクセスでき、TextChanged
イベントと Completed
イベントがテキストが変更または完了したことを通知します。
Entry 内のテキストが変更されると TextChanged
イベントが発生し、TextChangedEventArgs
が OldTextValue
と NewTextValue
プロパティを介して変更前後のテキストを提供します。
void OnEntryTextChanged(object sender, TextChangedEventArgs e)
{
string oldText = e.OldTextValue;
string newText = e.NewTextValue;
string myText = entry.Text;
}
Completed
イベントは、ユーザーがキーボードの Return キーまたは Tab キー (Windows) を押して入力を終了すると発生します。 イベントのハンドラーは、汎用イベント ハンドラーです。
void OnEntryCompleted(object sender, EventArgs e)
{
string text = ((Entry)sender).Text;
}
Completed
イベントが発生した後、ReturnCommand
プロパティで指定された ICommand が実行され、ReturnCommandParameter
プロパティで指定された object
が ReturnCommand
に渡されます。
Note
Entry 継承階層にある VisualElement クラスには、Focused
と Unfocused
イベントもあります。
文字間隔を設定する
CharacterSpacing
プロパティに double
値を設定することで、文字間隔を Entry に適用できます。
<Entry ...
CharacterSpacing="10" />
結果として、Entry により表示されるテキスト内の文字は、デバイスに依存しない単位で CharacterSpacing
の間隔が設定されます。
Note
CharacterSpacing
プロパティの値は、Text
と Placeholder
プロパティによって表示されるテキストに適用されます。
入力の長さを制限する
MaxLength
プロパティを使用すると、Entry に許可されている入力の長さを制限できます。 このプロパティは正の整数に設定する必要があります。
<Entry ...
MaxLength="10" />
MaxLength
プロパティの値が 0 の場合は、入力が許可されないことを示し、Entry の規定値である int.MaxValue
の場合は、入力可能な文字数に有効な制限がないことを示します。
カーソル位置とテキスト選択の長さを設定する
CursorPosition
プロパティを使用して、Text
プロパティに格納されている文字列に、次の文字を挿入する位置を取得または設定できます。
<Entry Text="Cursor position set"
CursorPosition="5" />
CursorPosition
プロパティの既定値は 0 です。これは、テキストが Entry の先頭に挿入されることを示します。
さらに、SelectionLength
プロパティを使用して、Entry の中でテキスト選択の長さを取得または設定できます。
<Entry Text="Cursor position and selection length set"
CursorPosition="2"
SelectionLength="10" />
SelectionLength
プロパティの既定値は 0 です。これは、テキストが選択されていないことを示します。
クリア ボタンを表示する
ClearButtonVisibility
プロパティを使用して、Entry がクリア ボタンを表示するかどうかを制御できます。ユーザーはクリア ボタンを使用してテキストをクリアできます。 このプロパティは、ClearButtonVisibility
列挙メンバーに設定する必要があります。
Never
は、クリア ボタンが表示されないようにすることを示します。 これは、ClearButtonVisibility
プロパティの既定値です。WhileEditing
は、フォーカスとテキストがある間に、クリア ボタンが Entry に表示されることを示します。
次の例では、プロパティの設定を示します。
<Entry Text=".NET MAUI"
ClearButtonVisibility="WhileEditing" />
次のスクリーンショットは、Android 上の Entry でクリア ボタンが有効になっている状態を示しています。
テキストの変換
TextTransform
プロパティを TextTransform
列挙型の値に設定すれば、Entry は、Text
プロパティに格納されているテキストの大文字と小文字を変換できます。 この列挙型には、次の 4 つの値があります。
None
は、テキストが変換されないことを示します。Default
は、プラットフォームの既定の動作を使います。 これは、TextTransform
プロパティの既定値です。Lowercase
は、テキストが小文字に変換されることを示します。Uppercase
は、テキストが大文字に変換されることを示します。
次の例は、テキストを大文字に変換する方法を示しています。
<Entry Text="This text will be displayed in uppercase."
TextTransform="Uppercase" />
テキスト入力を不明瞭にする
Entry は、IsPassword
に設定されている場合、入力されたテキストを視覚的に不明瞭にする true
プロパティを提供します。
<Entry IsPassword="true" />
次のスクリーンショットは、入力が不明瞭にされている Entry を示します。
キーボードをカスタマイズする
ユーザーが Entry とやりとりする際に表示されるソフト入力キーボードは、Keyboard
プロパティを使用すれば、Keyboard
クラスの次のいずれかのプロパティにプログラムで設定できます。
Chat
- 絵文字が使えるテキスト メッセージや場所に使います。Default
- 既定のキーボード。Email
- 電子メール アドレスを入力するときに使用します。Numeric
- 数値を入力するときに使用します。Plain
-KeyboardFlags
を指定しないで、テキストを入力するときに使用します。Telephone
- 電話番号を入力するときに使用します。Text
- テキストを入力するときに使用します。Url
- ファイル パスおよび Web アドレスを入力するために使用します。
次の例では Keyboard
プロパティの設定を示します。
<Entry Keyboard="Chat" />
Keyboard
クラスには、大文字の設定、スペルチェック、および単語補完候補の動作を指定することで、キーボードをカスタマイズするために使用できる Create
ファクトリ メソッドもあります。 KeyboardFlags
列挙値がメソッドへの引数として指定され、カスタマイズされた Keyboard
が返されます。 KeyboardFlags
列挙体には次の値が含まれます。
None
- キーボードに機能は追加されません。CapitalizeSentence
- 入力された各文の最初の単語の最初の文字が自動的に大文字になることを示します。Spellcheck
- 入力したテキストに対してスペル チェックが実行されることを示します。Suggestions
- 入力したテキストに対して単語補完が提供されることを示します。CapitalizeWord
- 各単語の最初の文字が自動的に大文字になることを示します。CapitalizeCharacter
- すべての文字が自動的に大文字になることを示します。CapitalizeNone
- 大文字の自動設定を行わないことを示します。All
- 入力したテキストに対して、スペルチェック、単語補完、および文への大文字の設定が行われることを示します。
次の XAML コード例は、既定の Keyboard
をカスタマイズして、単語補完を提供し、入力したすべての文字を大文字に設定する方法を示しています。
<Entry Placeholder="Enter text here">
<Entry.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Entry.Keyboard>
</Entry>
同等の C# コードを次に示します。
Entry entry = new Entry { Placeholder = "Enter text here" };
entry.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);
戻りキーをカスタマイズする
Entry にフォーカスがあるときに表示されるソフト入力キーボードの戻りキーの外観は、ReturnType
プロパティを ReturnType
列挙型の値に設定して、カスタマイズできます。
Default
: 特定の戻りキーが必要なく、プラットフォームの既定値が使用されることを示します。Done
: "完了" 戻りキーを示します。Go
: "Go" 戻りキーを示します。Next
: "次へ" 戻りキーを示します。Search
: "検索" 戻りキーを示します。Send
: "送信" 戻りキーを示します。
戻りキーを設定する方法を次の XAML の例に示します。
<Entry ReturnType="Send" />
Note
戻りキーの正確な外観は、プラットフォームによって異なります。 iOS では、戻りキーはテキストベースのボタンです。 ただし、Android と Windows では、戻りキーはアイコンベースのボタンです。
Return キーが押されると、Completed
イベントが発生し、ReturnCommand
プロパティによって指定された ICommand が実行されます。 さらに、ReturnCommandParameter
プロパティで指定された object
は、パラメータとして ICommand に渡されます。 コマンドの詳細については、「コマンド」をご覧ください。
ソフト入力キーボードの表示と非表示
Microsoft.Maui
名前空間の SoftInputExtensions
クラスは、テキスト入力をサポートするコントロールでソフト入力キーボードとの対話をサポートする一連の拡張メソッドを提供します。 このクラスは次のメソッドを定義します。
IsSoftInputShowing
は、デバイスが現在ソフト入力キーボードを表示しているかどうかを確認します。HideSoftInputAsync
は、ソフト入力キーボードが現在表示されている場合、非表示にしようとします。ShowSoftInputAsync
は、ソフト入力キーボードが現在非表示になっている場合、表示しようとします。
次の例は、entry
という名前の Entry でソフト入力キーボードが現在表示されている場合に非表示にする方法を示しています。
if (entry.IsSoftInputShowing())
await entry.HideSoftInputAsync(System.Threading.CancellationToken.None);
スペル チェックを有効または無効にする
IsSpellCheckEnabled
プロパティは、スペル チェックを有効にするかどうかを制御します。 既定では、プロパティは true
に設定されます。 ユーザーがテキストを入力すると、スペルミスが示されます。
ただし、ユーザー名の入力などの一部のテキスト入力シナリオでは、スペル チェックは否定的なエクスペリエンスを提供するため、IsSpellCheckEnabled
プロパティを false
に設定して無効にする必要があります。
<Entry ... IsSpellCheckEnabled="false" />
Note
IsSpellCheckEnabled
プロパティが false
に設定されていて、カスタム キーボードが使用されていない場合、ネイティブ スペル チェッカーは無効になります。 ただし、スペルチェックを無効にする Keyboard
(Keyboard.Chat
など) が設定がされている場合、IsSpellCheckEnabled
プロパティは無視されます。 したがって、このプロパティを使用して、スペル チェックを明示的に無効にしている Keyboard
に対してスペル チェックを有効にすることはできません。
テキスト予測を有効および無効にする
IsTextPredictionEnabled
プロパティは、テキスト予測と自動テキスト修正を有効にするかどうかを制御します。 既定では、プロパティは true
に設定されます。 ユーザーがテキストを入力すると、単語の予測が表示されます。
ただし、ユーザー名の入力など、一部のテキスト入力シナリオでは、テキスト予測と自動テキスト修正は否定的なエクスペリエンスを提供するため、IsTextPredictionEnabled
プロパティを false
に設定して無効にする必要があります。
<Entry ... IsTextPredictionEnabled="false" />
Note
IsTextPredictionEnabled
プロパティが false
に設定されていて、カスタム キーボードが使用されていない場合、テキスト予測と自動テキスト修正は無効になります。 ただし、テキスト予測を無効にする Keyboard
が設定されている場合、IsTextPredictionEnabled
プロパティは無視されます。 そのため、このプロパティを使用して、テキスト予測を明示的に無効にする Keyboard
に対してテキスト予測を有効にすることはできません。
テキスト入力を禁止する
IsReadOnly
プロパティを true
に設定して、Entry 内のテキストをユーザーが変更できないようにすることができます。
<Entry Text="User input won't be accepted."
IsReadOnly="true" />
.NET MAUI