2016-10-06 3 views
3

Чтобы сделать edittext без использования мягкой клавиатуры, у меня был атрибут edittext.textIsSelectable(true), и я скрыл мягкую клавиатуру.Мягкая клавиатура не открывается после установки textIsSelectable (true) в Android

Когда я снова пытаюсь открыть мягкую клавиатуру, она не открывается.

Я попытался установить setFocusable(true) в редакторе, но клавиатура не открывалась. Любые предложения будут оценены.

Спасибо

+0

используйте 'edittext.requestFocus();' в вашем java-коде. – Ironman

+0

Я пробовал, но все еще не работал. – vijay

ответ

0

Попробуйте Для Показана экранной клавиатуры

InputMethodManager inputMethodManager = 
     (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    inputMethodManager.toggleSoftInputFromWindow(
     linearLayout.getApplicationWindowToken(), 
     InputMethodManager.SHOW_FORCED, 0); 

Для Скрытия SoftKeyboard -

InputMethodManager imm = (InputMethodManager) 
            getSystemService(Context.INPUT_METHOD_SERVICE); 
if(imm != null){ 
     imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY); 
    } 
+1

Я пробовал свой метод, но после установки силового шоу, мягкая клавиатура не закрывалась даже после закрытия приложения. – vijay

0

Чтобы принудительно открытой softkeyboard попробовать этот

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

1

Без установки атрибута edittext.textIsSelectable(true)

вы можете иметь возможность выбрать введенный текст и скопировать его право, почему бы тебе не пойти вслепую с EditText с основными атрибутами

+0

Я не хочу, чтобы клавиатура открывалась, когда я выбираю текст в edittext, поэтому. Я думаю, что это единственный способ скрыть клавиатуру, не влияя на выбор. Если вы знаете какой-либо другой способ скрыть клавиатуру при выборе текста, вы можете ответить. :-) – vijay

+0

Я удалил textSelectable и теперь он работает. Также текст можно выбрать без этого свойства. – Rasel

3

Используя приведенный ниже код для EditText вы можете получить событие для Cut/Copy/Paste И вы должны создать EditText как below.and вы можете скрыть экранную клавиатуру после того, как выстрелил событие ...

<com.example.textlink.EditTextMonitor 
android:id="@+id/editText" 
android:layout_width="fill_parent" 
android:layout_height="100dp" 
android:hint="EditText" /> 

Создать один файл Java в пакете ...

public class EditTextMonitor extends EditText { 
private final Context mcontext; // Just the constructors to create a new 
           // EditText... 

public EditTextMonitor(Context context) { 
    super(context); 
    this.mcontext = context; 
} 

public EditTextMonitor(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.mcontext = context; 
} 

public EditTextMonitor(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    this.mcontext = context; 
} 

@Override 
public boolean onTextContextMenuItem(int id) { 
    // Do your thing: 
    boolean consumed = super.onTextContextMenuItem(id); 
    // React: 
    switch (id) { 
    case android.R.id.cut: 
     onTextCut(); 
     break; 
    case android.R.id.paste: 
     onTextPaste(); 
     break; 
    case android.R.id.copy: 
     onTextCopy(); 
    } 
    return consumed; 
} 

/** 
* Text was cut from this EditText. 
*/ 
public void onTextCut() { 
    InputMethodManager imm = (InputMethodManager) getContext() 
      .getApplicationContext() 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
    Toast.makeText(mcontext, "Event of Cut!", Toast.LENGTH_SHORT).show(); 
} 

/** 
* Text was copied from this EditText. 
*/ 
public void onTextCopy() { 
    InputMethodManager imm = (InputMethodManager) getContext() 
      .getApplicationContext() 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
    Toast.makeText(mcontext, "Event of Copy!", Toast.LENGTH_SHORT).show(); 
} 

/** 
* Text was pasted into the EditText. 
*/ 
public void onTextPaste() { 
    InputMethodManager imm = (InputMethodManager) getContext() 
      .getApplicationContext() 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
    Toast.makeText(mcontext, "Event of Paste!", Toast.LENGTH_SHORT).show(); 
}} 
+0

Hi Santhosh, Спасибо за ваш ответ. Я очень ценю это. Но проблема заключается в том, когда мы выбираем какой-либо текст в мягкой клавиатуре edittext, не следует открывать. В вашем случае после выбора вырезания, копирования или вставки только мы можем скрыть мягкую клавиатуру. Но в моем случае клавиатура должна быть скрыта перед выбором вырезания, копирования или вставки. Спасибо. – vijay

1

Я нашел ответ.

Просто переопределите метод isTextSelectable() в редакторе Edittext.

Если вы хотите открыть клавиатуру, тогда верните super.isTextSelectable().

Если вы не хотите открывать клавиатуру, тогда верните true.

Все. Это сработало для меня.

Смежные вопросы