0

У меня есть телефон Android, использующий клавиатуру Google. В любом поле EditText в любом другом приложении, если я использую метод swipe для ввода текста, он добавляет пробел после каждого слова. Тем не менее, я написал собственное приложение, и когда я использую метод swipe для ввода текста в поле EditText, он НЕ добавляет пробел в слова. Это очень раздражает.EditText не добавляет пробела после слова, проведенного в

У меня есть AlertDialog с линейным представлением. На этом линейном виде есть текст EditText. Вот мой код, чтобы создать EditText и добавить его к виду:

final EditText titleBox = new EditText(this); 
titleBox.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | 
    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | 
    InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE); 
titleBox.setHint("Title"); 
layout.addView(titleBox); 

Любые идеи, почему его не добавляя пробелы между ними моими словами?

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

Обновление

Вот весь метод аналогичной страницы, его имея тот же вопрос, его немного менее сложным, то начальная страница я поиска неисправностей. У этого даже не имеется связанного с LinearLayout:

private void addBudget(final Budget budget) { 
EditText taskEditText = new EditText(this); 
     taskEditText.setId(R.id.add_budget_text); 
      taskEditText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

String dialogTitle = "Add budget"; 
final AlertDialog dialog = new AlertDialog.Builder(this) 
       .setTitle(dialogTitle) 
       .setMessage("What do you want to call this budget?") 
       .setView(taskEditText) 
       .setPositiveButton("Save", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // final String task = ; 
         SQLiteDatabase db = mHelper.getWritableDatabase(); 


         Budget lBudget = new Budget(); 
         if (budget != null) { 
          lBudget = budget; 
         } 
         EditText taskEditText = (EditText) findViewById(R.id.add_budget_text); 
         lBudget.title = String.valueOf(taskEditText.getText()); 

         // Init custom budget object //new Budget(){{ title=task; id = budgetID;}} 
         int retId = mHelper.saveBudget(db, lBudget); 

         db.close(); 
         int retRow = updateUI(retId); 
         mTaskListView.smoothScrollToPosition(retRow); 

        } 
       }) 
       .setNegativeButton("Cancel", null) 
       .create(); 
// Handle done on soft keyboard 
     taskEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
      @Override 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
       int result = actionId & EditorInfo.IME_MASK_ACTION; 
       if (result == EditorInfo.IME_ACTION_DONE) { 
        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); 
        return true; 
       } 
       return false; 
      } 
     }); 
     dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
     dialog.show(); 

    } 
+0

Что вы имели в виду, прокручивая текст? –

+0

Я думаю, вы можете проверить это http://stackoverflow.com/a/19514175/5319409 надеюсь, что это поможет –

+0

Возможный дубликат [Проверка правильности текста в формате Android] (http://stackoverflow.com/questions/19511075/android-edittext -space-validation) –

ответ

0

Не могли бы вы попробовать? Добавьте фильтр в editText. Я использовал его для ввода кода в своем приложении.

EditText et = (EditText) findViewById(R.id.edit_text); 
et.setFilters(new InputFilter[] { 
new InputFilter() { 
    @Override 
    public CharSequence filter(CharSequence charSequence, int start, int end, Spanned spanned, int start, int end { 
      if(charSequence.equals("")){ 
       return charSequence; 
      } 
      if(charSequence.toString().matches("[a-zA-Z ]+")){ 
       return charSequence; 
      } 
      return ""; 
     } 
    } 
}); 
+0

К сожалению, это не повлияло.Я также попытался изменить EditText, чтобы не быть окончательным, что не работало либо –

0

Так что я удалил клавиатуру Google и переустановил, и я изменил сборку для выпуска. Одна из этих двух вещей зафиксировала это.

+0

Так что вы попробовали на другом телефоне? –

+0

Да, на моих женах, однако это была новая установка клавиатуры и установка с рынка. Вот что вдохновило мой курс действий –

1

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

Я видел «выдавливание» исполнения салфетки, иногда он показывал «пустое пространство», а иногда и нет.

Путь я нашел, чтобы проверить, было показано, и если оно не добавить его, было это:

 editText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      checkCancel(); 
      int compare = count-before; 
      if(compare>1){ 
       String text = editText.getText().toString(); 
       String lastChar = (text.substring(text.length()-1,text.length())); 
       if(!lastChar.equals(" ")){ 
        String plus = text+" "; 
        editText.setText(plus); 
        editText.setSelection(editText.getText().length()); 
       } 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 

     }); 

Вы можете видеть, OnTextChanged может использовать переменные «до» и «счетчик», а если сравнение (разница между последним и текущим) составляет более 1, это слово, введенное Swipe. Затем вы можете проверить, отображается ли «пустое пространство», а если нет, просто добавьте его и перенесите все, что хотите.

Надеюсь, это поможет!

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