'Next'を押すと、User EditTextにフォーカスが移るはずです。それから、パスワードから、それは右に動く必要があります。それをコーディングする方法について私を手伝ってもらえますか?
<LinearLayout
Android:id="@+id/LinearLayout01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal" >
<TextView
Android:id="@+id/username"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="User Name*" />
<EditText
Android:id="@+id/txt_User"
Android:layout_width="290dp"
Android:layout_height="33dp"
Android:singleLine="true" />
</LinearLayout>
<LinearLayout
Android:id="@+id/LinearLayout02"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal" >
<TextView
Android:id="@+id/password"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Password*" />
<EditText
Android:id="@+id/txt_Password"
Android:layout_width="290dp"
Android:layout_height="33dp"
Android:singleLine="true"
Android:password="true" />
<TextView
Android:id="@+id/confirm"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Password*" />
<EditText
Android:id="@+id/txt_Confirm"
Android:layout_width="290dp"
Android:layout_height="33dp"
Android:singleLine="true"
Android:password="true" />
</LinearLayout>
焦点の移動は、与えられた方向で最近傍点を見つけるアルゴリズムに基づいています。まれに、デフォルトのアルゴリズムが開発者の意図した動作と一致しない場合があります。
次のXML属性を使用して、方向ナビゲーションのデフォルトの動作を変更します。
Android:nextFocusDown="@+id/.."
Android:nextFocusLeft="@+id/.."
Android:nextFocusRight="@+id/.."
Android:nextFocusUp="@+id/.."
方向ナビゲーションの他に、タブナビゲーションを使用することができます。これにはあなたが使う必要があります
Android:nextFocusForward="@+id/.."
特定のビューに焦点を合わせるには、次のように呼び出します。
view.requestFocus()
特定のフォーカスイベントの変化を聞くには、 View.OnFocusChangeListener
を使用します。
キーボード上の追加ボタンを処理するには、 Android:imeOptions
を使用できます。
アプリケーションとの統合を改善するためにエディタに関連付けられたIMEで有効にできる追加機能。ここでの定数は、imeOptionsによって定義されたものに対応します。
ImeOptionsの定数にはさまざまなアクションとフラグが含まれています。それらの値については上記のリンクを参照してください。
値の例
アクションキーは "next"操作を実行し、テキストを受け入れる次のフィールドにユーザーを移動します。
アクションキーは「完了」操作を実行します。通常、これ以上入力するものがなく、IMEが閉じます。
コード例:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
Android:id="@+id/editText1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="32dp"
Android:layout_marginTop="16dp"
Android:imeOptions="actionNext"
Android:maxLines="1"
Android:ems="10" >
<requestFocus />
</EditText>
<EditText
Android:id="@+id/editText2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/editText1"
Android:layout_below="@+id/editText1"
Android:layout_marginTop="24dp"
Android:imeOptions="actionDone"
Android:maxLines="1"
Android:ems="10" />
</RelativeLayout>
Imeoptionsイベントを聴きたい場合は TextView.OnEditorActionListener
を使用してください。
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
});
Android:inputType="text"
同じ効果をもたらすはずです。次の要素にフォーカスを持ってくるために次にヒットした後。
Android:nextFocusDown="@+id/.."
次のビューにフォーカスを取得したくない場合は、追加でこれを使用します。
あなたのeditTextを追加してください
Android:imeOptions="actionNext"
Android:singleLine="true"
マニフェストのアクティビティにプロパティを追加します
Android:windowSoftInputMode="adjustResize|stateHidden"
レイアウトファイルScrollViewのがすべてルートまたは親レイアウトに設定されている
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
tools:context="com.ukuya.marketplace.activity.SignInActivity">
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<!--your items-->
</ScrollView>
</LinearLayout>
毎回追加する必要がない場合は、styleを作成します。values/style.xmlにstyleを追加します
デフォルト/スタイル:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="editTextStyle">@style/AppTheme.CustomEditText</item>
</style>
<style name="AppTheme.CustomEditText" parent="Android:style/Widget.EditText">
//...
<item name="Android:imeOptions">actionNext</item>
<item name="Android:singleLine">true</item>
</style>
次の行を使う
Android:nextFocusDown="@+id/parentedit"
parentedit
は、次に注目するEditText
のIDです。
上記の行には次の行も必要です。
Android:inputType="text"
または
Android:inputType="number"
提案@Alexei Khlebnikovをありがとう。
Android:inputType="textNoSuggestions"
Android:imeOptions="actionNext"
Android:singleLine="true"
Android:nextFocusForward="@+id/.."
追加フィールドを追加する
Android:inputType = "textNoSuggestions"
私の場合はうまくいった!
<AutoCompleteTextView
Android:id="@+id/email"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/user"
Android:hint="@string/username"
Android:inputType="text"
Android:maxLines="1"
Android:imeOptions="actionNext"
Android:singleLine="true" />
この3行が魔法をやる
Android:maxLines="1"
Android:imeOptions="actionNext"
Android:singleLine="true"
OnEditorActionハンドラーでは、次の例のように、アクションを処理しているか(true)、またはロジックを適用して通常の動作が必要か(false)を示すブール値を返す必要があります。
EditText te = ...
te.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
if (actionId == EditorInfo.IME_ACTION_NEXT) {
// Some logic here.
return true; // Focus will do whatever you put in the logic.
}
return false; // Focus will change according to the actionId
}
});
私は、フォーカスが動かなかったので論理を実行した後にtrueを返したときにこれを見つけました。
次のコードを使うだけでうまくいくでしょう。そしてすべてのedittextにinputTypeを使うと、次のボタンがキーボードに表示されます。
Android:inputType="text" or Android:inputType="number" etc
場合によっては、フォーカスを手動で次のフィールドに移動する必要があります。
focusSearch(FOCUS_DOWN).requestFocus();
たとえば、クリック時に日付ピッカーを開くテキストフィールドがあり、ユーザーが日付を選択してピッカーを閉じると自動的に次の入力フィールドにフォーカスを移動するようにしたい場合に、これが必要になることがあります。これをXMLで処理する方法はありません。プログラムで実行する必要があります。
EditText
と一緒に複数行のimeOptions
を使いたい場合は、次のようにしてください。
Android:inputType="textImeMultiLine"
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/ScrollView01"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fillViewport="true"
Android:scrollbars="vertical" >
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="666dp"
Android:background="#1500FFe5"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
Android:id="@+id/TextView02"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/editGrWt"
Android:layout_marginTop="14dp"
Android:layout_toLeftOf="@+id/textView3"
Android:ems="6"
Android:text=" Diamond :"
Android:textColor="@color/background_material_dark"
Android:textSize="15sp" />
<EditText
Android:id="@+id/editDWt"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBottom="@+id/TextView02"
Android:layout_alignLeft="@+id/editGrWt"
Android:background="@color/bright_foreground_inverse_material_light"
Android:ems="4"
Android:hint="Weight"
Android:inputType="numberDecimal"
Android:nextFocusLeft="@+id/editDRate"
Android:selectAllOnFocus="true"
Android:imeOptions="actionNext"
/>
<requestFocus />
<TextView
Android:id="@+id/TextView03"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/TextView02"
Android:layout_below="@+id/TextView02"
Android:layout_marginTop="14dp"
Android:ems="6"
Android:text=" Diamond :"
Android:textColor="@color/background_material_dark"
Android:textSize="15sp" />
<EditText
Android:id="@+id/editDWt1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@+id/TextView03"
Android:layout_alignBottom="@+id/TextView03"
Android:layout_alignLeft="@+id/editDWt"
Android:background="@color/bright_foreground_inverse_material_light"
Android:ems="4"
Android:hint="Weight"
Android:inputType="numberDecimal"
Android:text="0"
Android:selectAllOnFocus="true"
Android:imeOptions="actionNext"/>
<requestFocus />
<TextView
Android:id="@+id/TextView04"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/editDWt1"
Android:layout_marginTop="14dp"
Android:layout_toLeftOf="@+id/textView3"
Android:ems="6"
Android:text=" Stone :"
Android:textColor="@color/background_material_dark"
Android:textSize="15sp" />
<EditText
Android:id="@+id/editStWt1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBaseline="@+id/TextView04"
Android:layout_alignBottom="@+id/TextView04"
Android:layout_alignLeft="@+id/editDWt1"
Android:background="@color/bright_foreground_inverse_material_light"
Android:ems="4"
Android:hint="Weight"
Android:inputType="numberDecimal"
Android:nextFocusForward="@+id/editStRate1"
Android:imeOptions="actionNext" />
<requestFocus />
<TextView
Android:id="@+id/TextView05"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/TextView04"
Android:layout_below="@+id/editStRate1"
Android:layout_marginTop="14dp"
Android:ems="6"
Android:text=" Stone :"
Android:textColor="@color/background_material_dark"
Android:textSize="15sp" />
</RelativeLayout>
</ScrollView>
InputTypeをedittextに追加して入力すると次のedittextに行きます
Android:inputType="text"
Android:inputType="textEmailAddress"
Android:inputType="textPassword"
などなど。
inputType = textMultiLineは、入力時に次の編集テキストに移動しません。
簡単な方法、1つ1つだけのフィールドがある場合:
設定する必要があります
Android:maxLines="1"
Android:imeOptions="actionNext"
Android:inputType=""
<-テキストのタイプを設定します。それ以外の場合はマルチラインになり、次に進むことを防ぎます
サンプル:
<EditText Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textSize="@dimen/text_large"
Android:maxLines="1"
Android:inputType="textEmailAddress"
Android:imeOptions="actionNext"
Android:layout_marginLeft="@dimen/element_margin_large"
Android:layout_marginRight="@dimen/element_margin_large"
Android:layout_marginTop="0dp"/>
Inside Edittext just arrange like this
<EditText
Android:id="@+id/editStWt1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:imeOptions="actionNext" //now its going to rightside/next field automatically
..........
.......
</EditText>