2016-01-22 4 views
3

Я нашел несколько ответов на этот вопрос, но ни один из них не работает для меня. У меня есть текст «Правка» в моем фрагменте, который запускается при запуске приложения. Когда этот фрагмент открывается, появляется и мягкая клавиатура. Как я могу предотвратить это? Это то, что я в моем onCreateView метод в моем фрагменте ....Закрытие мягкой клавиатуры во фрагменте

 try { 
     InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(
       Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(userName.getWindowToken(), 0); 
    }catch(Exception e) { 
     e.printStackTrace(); 
    } 
+0

do y ou получил это исправлено –

+0

вы можете разместить свой XML? –

ответ

5

Попробуйте это в onCreateView или onActivityCreated.

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
1

Мой недавно проект я использую код, как следовать, чтобы скрыть раскладки клавиатуры, может быть, вы можете попробовать. (Я узнаю его из исходный код Wordpress-андроида)

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_template_add_doc, container, false); 
    //hide the keyboard if it is visible 
    InputMethodManager imm = (InputMethodManager) getActivity() 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0); 
    return view; 
} 
1

Попробуйте приведенные ниже логики, чтобы скрыть клавиатуру от автоматического открытия.

Попробуйте поместить текст редактирования в отдельную линейную строку и установить android:focusableInTouchMode="true". Это автоматически автоматически отключит открытие клавиатуры.

<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/edit_text" 
     android:layout_width = "match_content" 
     android:layout_height = "wrap_content"/> 
    </LinearLayout> 

или если вышеуказанное не работает, скройте программно, используя код ниже. Напишите его как отдельную функцию и вызовите ее в коде.

вызов этого метода в вашем фрагменте после представления создается, как показано ниже.

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    hideKeyboard(); 
    } 

public void hideKeyboard() { 
    InputMethodManager inputMethodManager = (InputMethodManager) activity 
      .getSystemService(android.content.Context.INPUT_METHOD_SERVICE); 

    inputMethodManager.hideSoftInputFromWindow(
      activity.getCurrentFocus() 
        .getWindowToken(), 0); 
    } // hideKeyboard 

Удача ..!

0

Это работает для меня, попробуйте этот путь

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 


hideKeyboard(getActivity()); 
} 

    public static void hideKeyboard(Context context) { 

      try { 
       InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 

       View view = ((Activity) context).getCurrentFocus(); 
       if (view != null) { 
        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
0
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:focusable="true" 
android:focusableInTouchMode="true" 
android:background="@color/background_listview" 
android:orientation="vertical"> 

Используя это в главном верхнем Layout набора фокусируемой истинной и Android: focusableInTouchMode истинного

андроида: фокусируемый = "истинный"

андроид: focusableInTouchMode =» true "

Смежные вопросы