2012-03-01 15 views
3

I持って私のアプリでのEditTextフィールド:Kindleの火災のキーボードボタン

  <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の火災、ユーザーはEditTextが何の完了]ボタンを持っていない編集したいときに表示されるキーボード、上だけで私は上のスクリーンショットで強調表示「隠すキーボード」ボタンを傍受することができれば問題ないだろうソフトキーボード

enter image description here

を隠しボタン。しかし、OnEditorActionListenerを私がEditTextに添付しているようには見えないので、実際のレイアウトで自分の「完了」ボタンを押して、EditTextから離れていくことをやめて、キーボードを隠し、数に起因するすべての変更が

「隠すキーボード」ボタンを傍受する方法はあります、またはいくつかの代替ソリューションがある

を変更させますか?

ところで、私は他の場所で何imeOptionsを持っていないもinputTypeを指定します私のアプリで正規の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); 
     } 
+0

StackOverflowはプログラミングに関する質問です。質問はしていません。 IMEは 'android:imeOptions =" actionDone "を尊重する必要はありません。あなたが火でこれを見ているかもしれませんが、問題はそれよりも一般的です。 – CommonsWare

+0

私は知っています。私はKindle Fireの解決策を探しています。しかし、私はこれは新しいゼリー上の問題を引き起こすことを発見しました、のEditTextに単一行=「真」:inputType =「textMultiLine」とアンドロイド:私はあなたがアンドロイドを追加してみてくださいすることができ –

+2

を求めていた、まさにそれをより明確にするために私の答えを編集しましたBeanデバイス。 –

答えて

1

android:inputType="textMultiLine"android:singleLine="true" @Jamesワルドは、作品を示されているように。

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

+0

android:imeOptions = "actionGo"が適切です、これを使用してください:) –

関連する問題