Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.89
wondertalik
4 / 4 / 0
Регистрация: 05.02.2012
Сообщений: 51
#1

Установка курсора в EditText и отображение клавиатуры - Android

07.11.2012, 22:37. Просмотров 7811. Ответов 7
Метки нет (Все метки)

Суть вопроса, есть активность из которой вызывается диалог. Диалог состоит из текстового поля для ввода и двух кнопок (ок и cancel). Диалог реализован с помощью AlertDialog. Что нужно указать, вызвать чтобы при отображении диалогового окна курсор становился в текстовое поле и сразу же появлялась клавиатура для ввода (программно)! Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 22:37     Установка курсора в EditText и отображение клавиатуры
Посмотрите здесь:

Android Edittext
EditText Android
Android При нажатии на EditText показать клавиатуры с нужным языком
Android Дизайн EditText
Android Кастомный EditText
Свойства EditTExt Android
Android EditText и появление клавиатуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
obrazer
67 / 67 / 1
Регистрация: 04.09.2012
Сообщений: 170
07.11.2012, 23:26     Установка курсора в EditText и отображение клавиатуры #2
В режиме редактирования Layout-а павой кнопкой мыши на поле ввода и RequestFocus (в самом верху выпавшего меню). Поле будет иметь фокус по умолчанию, а следовательно и автоматически откроется клавиатура
wondertalik
4 / 4 / 0
Регистрация: 05.02.2012
Сообщений: 51
07.11.2012, 23:30  [ТС]     Установка курсора в EditText и отображение клавиатуры #3
Вы имеете ввиду Eclipse? Я им не пользуюсь. Не могли бы подсказать, как это сделать ручками, я так понимаю нужно это задать тегами внутри разметки непосредственно самого EditText?
obrazer
67 / 67 / 1
Регистрация: 04.09.2012
Сообщений: 170
07.11.2012, 23:36     Установка курсора в EditText и отображение клавиатуры #4
Пример
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<EditText
        android:id="@+id/edUserName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView3"
        android:layout_alignBottom="@+id/textView3"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="31dp"
        android:layout_marginRight="69dp"
        android:layout_toRightOf="@+id/textView3"
        android:ems="10"
        android:inputType="text" >
 
        <requestFocus />
 
</EditText>
wondertalik
4 / 4 / 0
Регистрация: 05.02.2012
Сообщений: 51
07.11.2012, 23:50  [ТС]     Установка курсора в EditText и отображение клавиатуры #5
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical"
              android:padding="10dp">
 
    <EditText
            android:id="@+id/id_first_local_passwd"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:maxLength="4"
            >
    <requestFocus />
    </EditText>
 
</LinearLayout>
Это разметка для диалога. Диалог отображается. Но клавиатура не появляеться!!!
obrazer
67 / 67 / 1
Регистрация: 04.09.2012
Сообщений: 170
08.11.2012, 00:07     Установка курсора в EditText и отображение клавиатуры #6
А как диалог вызывается?
Можно попробовать через код получить EditText и вызвать у него requestFocus().
Кстати, этот метод может вернуть false, что будет означать невозможность фокусировки на данном View (возможно есть какая-то причина почему не фокусируется и в коде можно попробовать это контролировать).
wondertalik
4 / 4 / 0
Регистрация: 05.02.2012
Сообщений: 51
08.11.2012, 00:57  [ТС]     Установка курсора в EditText и отображение клавиатуры #7
Создал проект отдельный. Вот код:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Hello World, MyActivity"
            />
    <EditText
            android:id="@+id/login"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
 
        <requestFocus/>
    </EditText>
 
</LinearLayout>
MyActivity.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.example;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        showDialog(1);
    }
 
    @Override
    protected Dialog onCreateDialog(int id) {
        return DialogFactory.getDialogById(1, this);
    }
 
}
DialogFactory.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.example;
 
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
 
public class DialogFactory {
 
    public static int DIALOG_ALERT = 0;
 
    /**
     * Фабричный метод возвращающий
     * диалог по его коду
     *
     * @param id      код диалога
     * @param context
     * @return диалог соответствующий коду
     */
    public static Dialog getDialogById(int id, final Context context) {
        Dialog dialog = null;
        switch (id) {
            case 1:
                dialog = createInpuAler(context);
                break;
        }
 
        return dialog;
    }
 
    private static Dialog createInpuAler(final Context context) {
        Dialog dialog = null;
 
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
        View layout = inflater.inflate(R.layout.main, null);
 
        final EditText login = (EditText) layout.findViewById(R.id.login);
        boolean d = login.requestFocus();
        Log.e("mylogs", new Boolean(d).toString()); //возвращает true
 
        DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
             String input = login.getText().toString();
                Toast.makeText(context, input, Toast.LENGTH_SHORT).show();
            }
        };
 
        dialog = builder.setPositiveButton("OK", onClickListener).setView(layout).create();
 
        return dialog;
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 10:28     Установка курсора в EditText и отображение клавиатуры
Еще ссылки по теме:

Android EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText
Android EditText
Android Установка позиции курсора в EditText
Android Смайлы и EditText
Кастомный EditText Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
obrazer
67 / 67 / 1
Регистрация: 04.09.2012
Сообщений: 170
08.11.2012, 10:28     Установка курсора в EditText и отображение клавиатуры #8
Ну все верно и, по-логике, должно работать. Тем более, что "boolean d = login.requestFocus();" возвращает true... А курсорчик в поле ввода появляется?

Добавлено через 9 минут
Вот мысля пришла. А если переставить "boolean d = login.requestFocus();" после "dialog = builder.setPositiveButton("OK", onClickListener).setView(layout).create();"?
Yandex
Объявления
08.11.2012, 10:28     Установка курсора в EditText и отображение клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 20:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru