3

アプリにEditTextフィールドがあります。

           <EditText                    
                android:id="@+id/task_buy_edit_mass_editText1"
                android:minWidth="100dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"                    
                android:inputType="numberDecimal"
                android:imeOptions="actionDone" >

            </EditText>

問題は、私のKindle Fireでは、ユーザーが編集したいときに表示されるキーボードにEditText[完了]ボタンがなく、ソフトキーボードを非表示にするボタンだけがあることです。

ここに画像の説明を入力してください

上のスクリーンショットで強調表示した「キーボードを非表示」ボタンを傍受できれば、それは問題にはなりません。OnEditorActionListenerただし、アタッチしたをトリガーするようには見えないEditTextので、実際のレイアウトに独自の[完了]ボタンを配置してEditTextからフォーカスを外し、非表示にする以外に、何をすべきかが少し行き詰まっています。キーボードを使用して、番号が変更された結果として変更を加えます

「キーボードを隠す」ボタンを傍受する方法はありますか、それとも別の解決策がありますか?

ちなみに、私はアプリの他の場所にimeOptionsもinputTypeも指定せず、Returnキーを持っている通常のEditTextビューを持っています

参考までに、残りのコードは次のとおりです。

        editText.setOnEditorActionListener(new OnEditorActionListener(){

            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if(actionId==EditorInfo.IME_ACTION_DONE || actionId==EditorInfo.IME_ACTION_NEXT || actionId==EditorInfo.IME_NULL || event.getKeyCode()==KeyEvent.FLAG_EDITOR_ACTION || event.getKeyCode()==KeyEvent.KEYCODE_ENTER){
                    closeKeyboard(v, done_button);              
                    return true;
                }
                return false;
            }});

            // set done button for keyboards without correct IME options
            final EditText finalEditText = editText;

            editText.setOnTouchListener(new OnTouchListener(){

                @Override
                public boolean onTouch(View v, MotionEvent event) {                     
                    done_button.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View v) {                               
                            closeKeyboard(finalEditText, v);
                        }});
                    done_button.setVisibility(View.VISIBLE);
                    return false;
                }                   
            });

        private void closeKeyboard(TextView v, View buttonv){
                demand.setAmount(Double.parseDouble((v.getText().toString()))); // update the game

                // close keyboard
                InputMethodManager inputManager = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);                       
                inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);                       
                v.clearFocus();
                buttonv.setVisibility(View.GONE);
        }
4

1 に答える 1

1

android:inputType="textMultiLine"そしてandroid:singleLine="true"@James Waldが作品を示したように。

EDIT:上記を行うと、EditTextの複数行になります。代わりandroid:imeOptions="actionGo"に、すべてのデバイスで私の目的のために機能しました(AFAIK)。

于 2013-10-25T20:37:19.897 に答える