Подтвердить что ты не робот

Android: Edittext с гравитационным центром, не работающим на устройстве

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

Это мой edittext, может ли кто-нибудь увидеть, если что-то не хватает?

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_gravity="center"
>
<EditText 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal" 
    android:ellipsize="end" 
    android:maxLines="1"
    android:gravity="center" 
    android:layout_gravity="center"
    android:hint="Some hint text"
></EditText>
</LinearLayout>

Что я хочу:

This is what I want

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

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

4b9b3361

Ответ 1

Наконец-то я нашел решение для его работы. Этот 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>

Ответ 2

Я думаю, вы должны установить тяжести parentLayout вашего EditText, чтобы центр

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>

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

Я попробовал сочетание гравитации:

android:gravity="top|center_horizontal"

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

Ответ 6

  • В файле 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);
                }
            }
        });