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

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

У меня есть Fragment (версия совместимости) с EditText в его макете. Я использую ViewFlipper для переключения между фрагментами. Когда я дойду до этого Fragment, мягкая клавиатура откроется автоматически. Это не то, что я хочу. Вот что я пытался остановить или скрыть.

Пробовал:

android:descendantFocusability="beforeDescendants" 

на главном экране фрагмента

Пробовал:

android:windowSoftInputMode="stateHidden"

и

android:windowSoftInputMode="stateAlwaysHidden"

в манифесте для активности

Пробовал:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mViewPager.getChildAt(position).getWindowToken(), 0);

в OnPageChangeListener моего ViewPager

Пробовал:

InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(voucherView.findViewById(R.id.redeem_mobile_number).getWindowToken(), 0);

в onCreateView в моем фрагменте

Пробовал:

InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getView().findViewById(R.id.redeem_mobile_number).getWindowToken(), 0);

в onStart в моем фрагменте

Пробовал:

voucherView.findViewById(R.id.redeem_mobile_number).clearFocus();

в onCreateView в моем фрагменте

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

4b9b3361

Ответ 1

Это сообщение имеет решение проблемы.

Ответ заключался в том, чтобы добавить android:focusableInTouchMode="true" в LinearLayout, содержащий EditText. Теперь он не вызывает мягкую клавиатуру автоматически.

Ответ 2

 <LinearLayout 
         android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:focusable="true" 
        android:focusableInTouchMode="true"         
        >

    <EditText
        android:id="@+id/retailer_search_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />

</LinearLayout>

Просто следуй за ним. И EditText должен находиться внутри LinearLayout.

Ответ 3

Вы пробовали это?

<activity
    android:name=".YourActivityName"
    android:configChanges="keyboardHidden|orientation"
    android:windowSoftInputMode="stateHidden" />

EDIT:

попробуйте это (теперь я плохой, но попробую это):)

    Thread splashTread = new Thread() {
        @Override
        public void run() {
            try {

                sleep(1);
            } catch (InterruptedException e) {
                // do nothing
            } finally {
                runOnUiThread(new Runnable() {
                    public void run() {
                        InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.hideSoftInputFromWindow(youreditText.getWindowToken(), 0);

                    }
                });

            }
        }
    };
    splashTread.start();

Ответ 4

Добавьте это в свой тег активности в AndroidManifest.xml keyboardHidden: не позволит автоматически открывать мягкую клавиатуру ввода.

android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize|stateHidden"

Ответ 5

У меня была мягкая клавиатура, вызывающая тревогу всплывающее окно и нажатие всех просмотров, когда я нажимаю на редактируемый текст в виде фрагмента (мое приложение представляет собой приложение вложенных фрагментов - фрагмент в фрагменте)

Я попробовал дюжину решений здесь и в Интернете, но ничего не помогло, кроме этого, который редактирует сам EditText в XML (а не в представлении выше/не в манифесте/не переписывании при создании действий/ничем другом)

добавив строку android:focusableInTouchMode="false" в ваш XML-текст EditText.

Я заимствовал решение от ACengiz в этой теме

как заблокировать виртуальную клавиатуру при нажатии на edittext в андроиде?

Только 2 человека проголосовали за него? хотя для меня это была заставка после частых головных болей.

Ответ 6

Это сработало для меня.

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}

Ответ 7

Попробуйте это

exitText.setFocusableInTouchMode(true);