Edit Text
もし数字キーボードが必要か、ユーザーがテキストを入力できるようにするには、どうでしょうか
Edit Text box追加する
もし数字やテキストの入力が必要な場合は、Edit Text
コントロールを利用して迅速に実装することができます。その過程は、以下のとおりです。
プロジェクトウィンドウでボタンを追加しようとするアクティビティのUIをダブルクリックします。
右側のコントロールボックスで
Edit Text
コントロールを選択します。Edit Text
コントロールをマウスの左クリックした後、目的の場所をクリックするか、ドラッグアンドドロップすると、コントロールが作成されます。作成されたボタンを左クリックすると、プロパティウィンドウで、ボタンに関連するプロパティを確認し、変更することができます。
プログラムをボードにダウンロードして実行した後
Edit Text
コントロールをタッチすると、内蔵された仮想の数字キーボードまたは仮想テキストキーボードが自動的にポップアップされ、これにより、数字やテキストを入力することができます。内蔵された仮想テキスト入力キーボード
内蔵された仮想数値入力キーボード
基本Edit Text
は白であり、プロパティウィンドウを使用して、ユーザーが好みのスタイルに変更が可能です。Edit Text
に関連する属性は次のとおりです。
Password
もし「Yes」を選択すると、キーボード入力時に表示されるテキストがPassword Char
で表示され、「No」の場合、入力したテキストが表示されます。Password Char
Password
が「Yes」である場合は、キーボード入力時に表示されるテキストを設定します。基本的には「*」が表示されます。Input Type
入力形式は、2つの方法があります。- Text - 英語または数字を入力することができます。
- Number - 数字のみを入力できます。
Hint Text
何の入力がない場合は自動的に表示されるテキストを設定します。Hint Text Color
Hint Textの色を設定します。
仮想キーボードから入力されたコンテンツのインポート
Edit Text
コントロールを正常に完了した後、コンパイルすると、それに関連する関数が自動的に生成されます。プロジェクトディレクトリでjni/ logic/**** Logic.cc
ファイルを開くと、その関数を見つけることができます。
static void onEditTextChanged_XXXX(const std::string &text) {
//LOGD("The current input is %s \n", text.c_str());
}
仮想キーボードでテキストを入力すると、システムは自動的にその関数を呼び出して、 text
パラメータを使用して、現在入力されたコンテンツが配信されます。
std:: string
は、C ++のstringであり、ユーザーは次の例のようにstringポインターを取得することができます。
const char* str = text.c_str();
入力されたコンテンツを数値に変換
Edit Text
に関連する関数では、文字のみの獲得が可能です。だから数字を入力しても、文字取得されるので、これを数字で変える必要があります。
atoi
関数は、文字を数字に置き換えることができます。たとえば、文字「213」は、整数213
に変更することができます。 もし数字に変更することができない文字が入力されると、変換が失敗することがあります。예 :
atoi("213abc");
return213
atoi("abc");
return0
static void onEditTextChanged_EditText1(const std::string &text) { int number = atoi(text.c_str()); LOGD("String to number = %d", number); }
atof
は文字を浮動小数点数の切り替え関数です。たとえば、「3.14」は、浮動小数点数3.14
に切り替わります。 もし浮動小数点数に変更することができない文字が入力されると、変換が失敗することがあります。例 :
atoi("3.14abc");
return3.14
atoi("abc");
return0
static void onEditTextChanged_EditText1(const std::string &text) { // The atof function can convert a string to a corresponding floating point number, for example, "3.14" can be converted to an // integer 3.14 // If the parameters are not standardized, the conversion will fail, and the number 0 will be returned uniformly double f = atof(text.c_str()); LOGD("Convert string to floating point = %f", f); }
カスタムのIME
デフォルトの入力方法に加えて、ユーザーが希望する形態の入力機を作ることができます。Sample Code PackageのImeDemoプロジェクトで、その例を見つけることができます。(現在は文字と数字のみです。)
通常のIMEとカスタムのIMEの違いは以下の通りです。
- 通常のIMEは、
Activity
を継承し実装されるが、カスタムのIMEはIMEBaseApp
の継承が必要です。 さらに登録方法に違いがあります。通常のIMEは、
REGISTER_ACTIVITY(**** Activity);
を使用して登録されますが、カスタムのIMEはREGISTER_SYSAPP(APP_TYPE_SYS_IME、**** Activity);
を使用して登録されます。(**は、UIファイル名)ImeDemoプロジェクトを修正して、ユーザー独自のカスタムのIMEを作成することができます。
- まず、
UserIme.ftu
ファイルをプロジェクトのuiディレクトリにコピーします。 UserImeActivity.h
とUserImeActivity.cpp
をユーザーのプロジェクトのactivityディレクトリにコピーします。UserImeLogic.cc
ファイルをプロジェクトのlogicディレクトリにコピーします。
以後UserImeLogic.cc
ファイルをユーザーにニーズに合わせて変更します。