Как избегать того, чтобы Эдиттекст де Андроид показал клавиатуру, когда он получает фокус (не выводя контроля из строя)?

Случается, что у меня есть Эдит Текст типа textPersonName, и когда я перемещаю фокус другого Эдит Текст типа, восходите он показывает мне виртуальную клавиатуру, но я хочу, чтобы я не показал это себе, так как в Вашем месте я хочу, чтобы он явился диалогом, который содержал бы DatePicker (который уже это у меня есть)

Этот вопрос уже они сделали ее и решение, которое я прочитал:

TuEditText.setInputType(InputType.TYPE_NULL); 

и в xml:

android:inputType="none"

но одинокое снимает фокус и я должен давать клик в EditText, чтобы показывать диалог DatePicker и я стремлюсь того, чтобы я сохранил фокус, но чтобы я не показал виртуальную клавиатуру и показал мой диалог DatePicker

другое решение, которое я увидел, состоит в том, чтобы снимать фокус EditText восходите со следующим кодом:

android:focusable="false"

но это не то, что я стремлюсь к тому, чтобы реализовать, так как, сняв фокус, я должен давать клик в EditText, чтобы показывать диалог DatePicker, я повторяю стремлюсь того, чтобы он сохранил фокус, но чтобы он не показал виртуальную клавиатуру и показал мой диалог DatePicker

Далее я оставляю им код xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

 <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/txt_practica"
        android:hint="Practica"
        android:layout_marginTop="9dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="date"
        android:ems="10"
        android:hint="Fecha de uso"
        android:id="@+id/txt_fechadeuso"
        android:layout_below="@+id/txt_practica"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="16dp"
        android:onClick="mostrarCalendario" />

</RelativeLayout>
4
задан 02.06.2016, 09:13
4 ответа

Ты можешь тестировать это:

if(tuEdtittext.requestFocus()) {
esconderTecladoyAbrirElDatePicker();
}

TambiГ©n пробует используя OnFocusChangeListener :

 tuEdittext .setOnFocusChangeListener(new OnFocusChangeListener() {          

    public void onFocusChange(View v, boolean hasFocus) {
        //Escondes el teclado y muestras el datePicker
    }
});
2
ответ дан 24.11.2019, 14:15
  • 1
    Большое спасибо, вот точно то, в чем он нуждался, я я функционирую с OnFocusChangeListener – El Cóndor 03.06.2016, 05:28

Добрый день, сделав focusable=false у тебя есть onTouchListener, чтобы открывать DatePicker, если так или иначе ты нуждаешься в том, чтобы щелкнуть, ты можешь делать это:

 yourEditText.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
             if (event.getAction() == MotionEvent.ACTION_DOWN)
                 v.performClick();
            return false;
        }
    });

Я, что я обычно делаю в этих случаях, он состоит в том, чтобы делать фальшивый editText, главным образом он состоит textView с linearLayout customizado фона для того, чтобы он показался editText, так как customizar TextView pre-lollipop может давать проблемы.

В конце концов я оставляю тебе простой способ прятать клавиатуру:

public void closeSoftKeyBoard() {
   InputMethodManager inputMethodManager =
                    (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
   inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
    }

Приветствие

1
ответ дан 24.11.2019, 14:15
  • 1
    Я понимаю, в самом деле нажав на EditText, могу открывать DatePicker то, к чему я стремлюсь, состоит в том, чтобы, когда EditText подтверждает текст в 1er и пропуск фокус не показал 2-ому EditText клавиатура, только DatePicker, на методе, чтобы скрывать клавиатуру, существует какая-то форма как, использовании этого для, когда фокус изменит другому EditText, скройте клавиатуру? – El Cóndor 02.06.2016, 20:23

Ты, что ты ищешь, он состоит в том, чтобы дезактивировать виртуальную клавиатуру android и мы должны делать следующее для этого: 1. - Мы, должно быть, идем в AndroidManifest.xml. 2. - В debemos добавления их следующий:

<activity android:name="NombreActividad"android:windowSoftInputMode="stateHidden"></activity>

3. - DespuГ©s этого мы отлаживаем ее soluciГіn android и с этим в момент, в котором пользователь выбирает edittext, виртуальная клавиатура android будет скрытой.

1
ответ дан 24.11.2019, 14:15

друг тестирует porner следующий признак android:windowSoftInputMode = "stateHidden" в manifest:

 <activity

        android:name=".tuactividad"
        android:label="titulo_de_tu_actividad"
        android:windowSoftInputMode="stateHidden">

    </activity>
0
ответ дан 24.11.2019, 14:15
  • 1
    Спасибо за ответ, но не появилось никакое изменение – El Cóndor 03.06.2016, 05:25