Android: Edittext с центром тяжести не работает на устройстве - PullRequest
16 голосов
/ 26 мая 2011

В Android я использую однострочный текст редактирования с гравитацией в центре.В эмуляторе это прекрасно работает, и подсказка и мигающий курсор появляется.При тестировании на устройстве (Xperia X10) ни текст подсказки, ни мигающий курсор не отображаются.Мигающий курсор отображается только в том случае, если я ввожу какой-либо текст в текст редактирования.

Это мой текст редактирования, кто-нибудь может увидеть, если что-то не хватает?1007 *This is what I want

Что я получаю с помощью приведенного выше кода (пустой текст редактирования без курсора):

The edittext doesn't show the hint text and have no blinking cursor

Ответы [ 6 ]

44 голосов
/ 09 июня 2011

Я наконец нашел решение, чтобы оно заработало. Этот EditText работает для меня: (протестировано на Sony Ericsson X10 и HTC Wildfire)

<EditText 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal" 
    android:digits="0123456789.,"
    android:ellipsize="start" 
    android:maxLines="1"
    android:gravity="center"
    android:hint="Some hint text"
></EditText>
5 голосов
/ 20 мая 2015

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

Мое текстовое значение EditText всегда отображалось какбыть немного выше центра, несмотря на установку гравитации CENTER, поэтому я дополнительно установил:

myEditText.setPadding(0, 0, 0, 0);

Это исправило это для меня, теперь мой EditText идеально отцентрирован: D

4 голосов
/ 26 мая 2011

я думаю, вам следует установить гравитацию parentLayout вашего EditText, равную center

EDIT:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal" 
    android:id="@+id/linearLayout">

   <EditText 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:inputType="numberDecimal" 
       android:ellipsize="end" 
       android:maxLines="1"
       android:hint="Some hint text"/>
</LinearLayout>
0 голосов
/ 22 февраля 2017
  • В файле XML добавьте гравитацию CENTER_HORIZONTAL для установки подсказки в center.CURSORVISIBLE = false, поэтому курсор не виден при первом нажатии время
  • В Java используйте addTextChangedListener, когда пользователь добавляет текст в это время изменить гравитацию влево, а также видимый курсор.

XML:

<EditText android:id="@+id/email"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="EMAIL"
  android:textStyle="bold"
  android:gravity="center_horizontal"
  android:inputType="textEmailAddress"
  android:layout_margin="10dp"
  android:cursorVisible="false" />

JAVA:

email.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) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (s.length() > 0) {
                    // position the text type in the left top corner
                    email.setGravity(Gravity.LEFT | Gravity.TOP);
                    email.setCursorVisible(true);
                }
                else
                {
                    // no text entered. Center the hint text.
                    email.setGravity(Gravity.CENTER);
                    email.setCursorVisible(false);
                }
            }
        });
0 голосов
/ 01 мая 2012

Я попробовал комбинацию гравитаций:

android:gravity="top|center_horizontal"

Моя предыдущая попытка заключалась в том, чтобы вставить EditText в RelativeLayout и установить его в центр, но он не выглядел так хорошо, этот способ работает лучше всего для меня.

0 голосов
/ 26 мая 2011

Вместо добавления гравитации в теге style добавьте это в ваш файл Layout, который будет работать

...