2014-09-11 13 views
6

Ho una tastiera personalizzata nella mia applicazione. la domanda è Come giocare a questa tastiera quando si fa clic su edittext.Io usando listener setonfocuschangre, ora il custone keyboaed appare quando viene modificato il focus di edittext.ma voglio mostrare questa tastiera ogni volta che clicco sull'edititto..un ​​info che ho dimenticato per mettere qui l'edittext è all'interno del frammento.Come visualizzare la tastiera personalizzata quando si fa clic su edittext in Android

risposta

7

ho creato una tastiera personalizzata nella mia applicazione con tag tastiera. Sto aggiungendo questa tastiera in un RelativeLayout sul mio schermo come.

private void createCustomKeyboard() { 
    Keyboard customKeyboard = new Keyboard(getActivity(), R.layout.keyboard); 
    CustomKeyboard mCustomKeyboard = new CustomKeyboard(getActivity(), this); 
    mCustomKeyboard.setKeyboard(customKeyboard); 
    RelativeLayout relLayKeyboard.addView(mCustomKeyboard); 
} 

Se si desidera utilizzare questo CustomKeyboard su uno o più di un EditText allora dovete usare sottostante Codice:

EditText edtxtName = (EditText) v.findViewById(R.id.edtName); 
RelativeLayout relLayKeyboard = (RelativeLayout)findViewById(R.id.relLay_keyboard); 
edtxtName.setOnTouchListener(exitSoftKeyBoard); 

private final OnTouchListener exitSoftKeyBoard = new OnTouchListener() { 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    InputMethodManager imm = (InputMethodManager) getActivity().getApplicationContext().getSystemService(
      android.content.Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
    if(v.equals(edtxtName)){ 
     edtxtName.requestFocus(); 
     relLayKeyboard.setVisibility(View.VISIBLE); 
    } 
    return true; 
    } 
}; 
0

Usa onClickListener come segue:

edit_text.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     custom_keyboard.open(); 
    } 
}); 

Oppure si può fare questo:

edit_text.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(hasFocus) 
       custom_keyboard.open(); 
      else 
       custom_keyboard.close(); 
     } 
    }); 
+0

ho usato l'onclicklistener di mostrare il mio popupleyboard e anche le pelli della tastiera all'interno di l'ascoltatore. grazie per il tuo aiuto .... – user2512822

1

Usa getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); per disattivare la tastiera di default e quindi impostare un click ascoltatore per mostrare la propria tastiera

+0

grazie per il tuo aiuto .... – user2512822

3

Puoi provare qualcosa del genere

edittext.setOnClickListener(new OnClickListener() { 
        // NOTE By setting the on click listener, we can show the custom keyboard again, 
        // by tapping on an edit box that already had focus (but that had the keyboard hidden). 
        @Override public void onClick(View v) { 
         showCustomKeyboard(v); 
        } 
      }); 


      // Disable standard keyboard hard way 
      // NOTE There is also an easy way: 'edittext.setInputType(InputType.TYPE_NULL)' 
     // (but you will not have a cursor, and no 'edittext.setCursorVisible(true)' doesn't work) 
       edittext.setOnTouchListener(new OnTouchListener() { 
        @Override public boolean onTouch(View v, MotionEvent event) { 
         EditText edittext = (EditText) v; 
         int inType = edittext.getInputType();  // Backup the input type 
         edittext.setInputType(InputType.TYPE_NULL); // Disable standard keyboard 
         edittext.onTouchEvent(event);    // Call native handler 
         edittext.setInputType(inType);    // Restore input type 
         return true; // Consume touch event 
        } 
       }); 


     // Disable spell check (hex strings look like words to Android) 
     edittext.setInputType(edittext.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

Per maggiori informazioni Check here

+0

Proverò con certezza questa informazione, dimentico di mettere qui l'edittext è all'interno del frammento .. – user2512822

Problemi correlati