2014-09-11 25 views
6

Tôi có bàn phím tùy chỉnh trong ứng dụng của mình. Câu hỏi là làm thế nào để chơi được bàn phím này khi bấm vào edittext.I sử dụng setonfocuschangre listener, bây giờ custon keyboaed xuất hiện khi tập trung edittext được thay đổi. nhưng tôi muốn hiển thị bàn phím này bất cứ khi nào tôi nhấp vào edittext..một thông tin tôi quên đặt ở đây văn bản nằm trong đoạn.Cách hiển thị bàn phím tùy chỉnh khi nhấp vào edittext trong android

Trả lời

7

Tôi đã tạo Bàn phím tùy chỉnh trong ứng dụng của mình bằng thẻ Bàn phím. Tôi đang thêm bàn phím này trong một RelativeLayout trên màn hình của tôi như thế nào.

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

Nếu bạn muốn sử dụng CustomKeyboard này trên một hoặc nhiều hơn một EditText sau đó bạn phải sử dụng mã dưới đây:

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

Sử dụng onClickListener như sau:

edit_text.setOnClickListener(new OnClickListener(){ 

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

Hoặc bạn có thể làm điều này:

edit_text.setOnFocusChangeListener(new OnFocusChangeListener() { 

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

tôi đã sử dụng OnClickListener để hiển thị popupleyboard của tôi và cũng là da bàn phím trong vòng người nghe. thankx cho sự giúp đỡ của bạn .... – user2512822

1

Sử dụng getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); để vô hiệu hóa bàn phím mặc định và sau đó thiết lập một listener nhấp chuột để hiển thị bàn phím của riêng bạn

+0

cảm ơn sự giúp đỡ của bạn .... – user2512822

3

Bạn có thể thử một cái gì đó như thế này

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); 

Để biết thêm thông tin, hãy kiểm tra here

+0

Tôi sẽ cố gắng này cho chắc chắn một thông tin tôi quên đặt ở đây edittext là trong đoạn .. – user2512822

Các vấn đề liên quan