Текст и текст подсказки Android EditText

У меня вопрос о EditText в Android. Как установить центр выравнивания подсказки, но текст выравнивается влево ? Большое спасибо.

Я просто хочу, чтобы курсор располагался слева и центр подсказки в EditText

Вы можете сделать это программно, в Java-коде. Например:

final EditText editTxt = (EditText) findViewById(R.id.my_edit_text); editTxt.setGravity(Gravity.CENTER_HORIZONTAL); editTxt.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() != KeyEvent.ACTION_UP) return false; if (editTxt.getText().length() > 1) return false; if (editTxt.getText().length() == 1) { editTxt.setGravity(Gravity.LEFT); } else { editTxt.setGravity(Gravity.CENTER_HORIZONTAL); } return false; } }); 

Не пропустите ни слова «final». Это делает ваш текстовый вид видимым в коде слушателя.

Вместо ключевого слова «final» вы можете использовать `View v` в` TextView` в методе onKey.

Обновлено 9 марта 2012 года:

В таком случае вы можете удалить `onKeyListener` и написать` onFocusChangeListener`

Вот какой код:

 editTxt.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { editTxt.setGravity(Gravity.LEFT); } else { if (editTxt.getText().length() == 0) { editTxt.setGravity(Gravity.CENTER_HORIZONTAL); } } } }); 

Вы можете использовать этот способ (добавьте подсказку с требуемым количеством пробелов). Добавьте это в свой собственный класс EditText:

 @Override protected void onSizeChanged (int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); String hint = getContext().getString(R.string.my_hint); float spaceSize = getPaint().measureText(" "); float textSize = getPaint().measureText(hint); int freeSpace = w - this.getPaddingLeft() - this.getPaddingRight(); int spaces = 0; if (freeSpace > textSize) { spaces = (int) Math.ceil((freeSpace - textSize) / 2 / spaceSize); } if (spaces > 0) { Log.i(TAG, "Adding "+spaces+" spaces to hint"); hint = prependStringWithRepeatedChars(hint, ' ', spaces); } setHint(hint); } private String prependStringWithRepeatedChars(/* some args */) { /// add chars to the beginning of string } 
Intereting Posts
Местоположение Google Play Не подключено. Вызовите connect () и дождитесь, когда onConnected () будет вызван Получение координат от «Поделиться этим местом» в Google Maps Как тестировать ежедневные сигналы тревоги на Android? Может ли проект библиотеки Android (APKLIB) быть запутанным Proguard? FATAL SIGNAL 11 (Sigsegv) при 0x00000000 (код = 1)? SVG-преобразование – эффективный способ хранения объектов Path, Paint и Matrix? Реализация клиента SAML для Android? Андроидная загрузка данных асинхронно с точки зрения пейджера Как получить все изображения и фотографии с моего устройства Android от sdcard? Могу ли я использовать одно определение двух кнопок, переключаясь между ними? Просмотр не подключен к оконному менеджеру, диалог отклонен Parse Отправка push-уведомления конкретному пользователю из облачного кода Kindle Fire и Google Maps api MapFragment возвращает null Реализация ластика в приложении для рисования Android – черный след, а затем прозрачный