Проблема с Android с объектом EditText - PullRequest
0 голосов
/ 07 августа 2011

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

Вот соответствующий код:

<Spinner
    android:id="@+id/event_location"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="30px"
    android:prompt="@string/location_prompt" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Event Name: " />
<EditText
    android:id="@+id/event_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Activity Type: " />
<Spinner
    android:id="@+id/event_type"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Address: " />
<EditText
    android:id="@+id/event_address"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

Сводка: начинается действие с EditText, и автоматически появляется виртуальная клавиатура.Я не хочу, чтобы это делалось, если пользователь не нажимает на текст редактирования.

Спасибо за любую помощь.

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

EditText автоматически устанавливается на фокусировку, поэтому вам нужно поставить android:focusable="false" или editText.setFocusable(false), чтобы предотвратить фокусировку EditText во время видимости счетчика.Вы также можете попробовать editText.setSelected(false).

1 голос
/ 11 октября 2012

Вот как это работает для меня:

  1. , чтобы убедиться, что редактируемый текст не получит фокус при запуске:В xml установите для атрибута focusable элемента EditText значение false:
android:focusable="false"

2.чтобы сделать фокусировку EditText снова после запуска:установите атрибут focusable из кода в методе oncreate() требуемой активности после метода setContent():

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.main_view);
    ....

    EditText et = (EditText) findViewById(R.id.et_notes);

    et.setFocusable(true);

    et.setFocusableInTouchMode(true);

    ...
}  
1 голос
/ 07 августа 2011

Попробуйте изменить XML-код на следующий код:

<Spinner 
android:layout_marginTop="30px"
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:id="@+id/event_location"
android:prompt="@string/location_prompt">
<requestFocus />
</Spinner>

Также попробуйте сделать для каждого EditText:

android:focusable="false"
android:focusableInTouchMode="false"

Посмотрите на это сообщение: Не позволяйте EditText получить фокус при запуске Activity

...