Enter в EditText переносит строку. Как реализовать др. дейст

Интерфейс, диалоги, темы, стили, меню
Ответить
aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Enter в EditText переносит строку. Как реализовать др. дейст

Сообщение aleksbim » 21 авг 2015, 13:16

Enter на клавиатуре в EditText переносит строку. Как перехватить нажатие на Enter и реализовать др. действие, т.е. выполнение определенного кода?

Dark67
Сообщения: 72
Зарегистрирован: 23 июл 2012, 23:11

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение Dark67 » 21 авг 2015, 13:41

попробуй реализовать

[syntax=java]
editText.setOnKeyListener(this);


@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == 66) {
Toast.makeText(this, "Enter was pressed", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}[/syntax]


aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение aleksbim » 22 авг 2015, 12:31

Хочу сделать, чтобы этот EditText превратился по нажатию Enter в Button или в TextView с отображением введенных данных. (Рассматриваю с вариант только с Enter)

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение aleksbim » 22 авг 2015, 13:49

Dark67, спасибо! Работает.

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение aleksbim » 26 авг 2015, 01:26

А как можно, чтобы еще и клавиатура скрылась?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение doter.ua » 26 авг 2015, 02:19

Норм варик с кейкодами, только никогда не юзай хардокдные константы, читабельность страдает + неизвестно не изменят ли этот код на другой. Константа: KeyEvent.KEYCODE_ENTER
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение doter.ua » 26 авг 2015, 02:20

aleksbim писал(а):А как можно, чтобы еще и клавиатура скрылась?
http://stackoverflow.com/a/18977227
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Enter в EditText переносит строку. Как реализовать др. д

Сообщение aleksbim » 02 сен 2015, 20:54

Перебрал оттуда все варианты, ни один не помог, клава не скрывается, кроме как нажать onBackPressed(). Тут я решил не париться и поставить в коде onBackPressed(), так он вместе с клавой и активити закрывает.
Тапы вне клавы тоже не скрывают.
В манифесте

Код: Выделить всё

        <activity android:name="Activity"            
            android:windowSoftInputMode="stateAlwaysHidden|adjustPan"></activity>
Код при нажатии на Enter:

Код: Выделить всё

	    public boolean onKey(View v, int keyCode, KeyEvent event) {
	    	EditText editText3_1=(EditText) findViewById(R.id.et_plus3_1);
	        if (keyCode == KeyEvent.KEYCODE_ENTER && editText3_1.isFocused()) {	        		    		
	    		String text = editText3_1.getText().toString();	            	
	            Button tv_3_1=(Button) findViewById(R.id.tv_3_1); tv_3_1.setVisibility(View.VISIBLE);
	            tv_3_1.setText(text);
	            editText3_1.setVisibility(View.GONE);
	            Button plus=(Button) findViewById(R.id.plus3_2); plus.setVisibility(View.VISIBLE);
	            hideSoftKeyboard();
//	            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)‌​;
//	            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
//	            onBackPressed();
	            return true;	
	        return false;	    	
	    }            
	        }

Ответить