0

У меня возникла странная проблема. Когда я добавить EditText используя следующий фрагмент кода:EditText не показывает входную клавиатуру по запросуфокус

edit = new EditText(context); 
edit.setInputType(InputType.TYPE_CLASS_TEXT); 
edit.layout(0, 0, (int)searchPane[W], (int)searchPane[H]); 
edit.setBackgroundColor(Color.TRANSPARENT); 
edit.setGravity(Gravity.CENTER_VERTICAL); 
edit.addTextChangedListener(SearchBox.this); 
edit.setFocusable(true); 
edit.setFocusableInTouchMode(true); 

и сделать это с помощью edit.draw(Canvas) в onDraw методом View. Я звоню edit.requestFocus() в onTouchMethod, хотя он не отображает клавиатуру ввода на запросе фокуса. Любые идеи, как заставить edittext принять текст и показать клавиатуру ввода?

Заранее спасибо.

+0

«и сделать его используя edit.draw (Canvas) в методе onDraw View. " да? Является ли EditText измеренным и выложенным внутри представления или просто нарисованным? – FunkTheMonk

+0

Что это значит? –

+0

Вы поняли это и получили ответ на сообщение? Это нормально, чтобы опубликовать свой собственный ответ, если один из других не поможет вам достаточно, чтобы вы их приняли, но хорошо принять ответ, чтобы другие люди с одинаковой проблемой находили его –

ответ

1

Ваш EditText не является частью иерархии View, поскольку вы никогда не добавляли его в качестве дочернего элемента в свою группу просмотра; как таковой он не получит события касания (между прочим), если вы не реализуете это в своей группе просмотра.

Пополнить счет addView(edit) и переместить edit.layout(0, 0, (int)searchPane[W], (int)searchPane[H]) в onLayout.

Возможно, это будет не так просто, создание пользовательских представлений - это передовая задача - уверены ли вы, что то, что вы пытаетесь сделать, невозможно с помощью одной (или комбинации) существующих макетов представлений?

Если нет, то вы должны читать http://developer.android.com/training/custom-views/index.html

0

Единственная комбинация, которая работала для меня:

edit.requestFocus() 
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(edit, InputMethodManager.SHOW_FORCED); 

Соединенный с добавлением режима ввода в активности

<activity android:name="..." 
       android:windowSoftInputMode="adjustResize" /> 
Смежные вопросы