簡體   English   中英

從ViewPager Fragments中隱藏Android應用程序中的軟鍵盤

[英]Hide Soft Keyboard In Android App From ViewPager Fragments

我有一個Android應用程序,其中包含一個包含2個片段的ViewPager。 第一個片段包含EditText字段。 當應用程序啟動時,該字段立即獲得焦點並啟動軟鍵盤(我想要發生)。 第二個片段僅包含一個列表(沒有可編輯的文本字段)。 當我從片段1滑動到片段2時,我希望鍵盤消失。 我嘗試過的任何東西似乎都沒有用。 鍵盤不僅保持在視圖中,還繼續更新片段1的EditText字段。

我想我要么使用不正確的代碼來隱藏鍵盤或將其放在錯誤的位置。 如果任何人都可以發布正確實現的示例,將不勝感激!

我最近的嘗試是放置應該在片段1的onDetach()方法中隱藏鍵盤的代碼:

@Override
public void onDetach()
{
    super.onDetach();

    InputMethodManager imm = (InputMethodManager) this.context.getSystemService(Context.INPUT_METHOD_SERVICE);

    // I'VE TRIED ALL THREE BELOW, NONE OF THEM WORK...

        // imm.hideSoftInputFromWindow(this.messageView.getWindowToken(), 0);
        // imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
        // this.context.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}

看到這個答案。 基本上,您需要讓ViewPager的OnPageChangeListener為您隱藏鍵盤。 (如果希望滑動動畫保持平滑,請在onPageScrollStateChanged而不是onPageSelected執行此onPageSelected 。)

@Override
public void onPageScrollStateChanged(int state)
{
    if (state == ViewPager.SCROLL_STATE_IDLE)
    {
        if (mViewPager.getCurrentItem() == 0)
        {
            // Hide the keyboard.
            ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
                .hideSoftInputFromWindow(mViewPager.getWindowToken(), 0);
        }
    }
}

在AndroidManifest中你應該添加到Activity聲明android:windowSoftInputMode =“stateHidden”:

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

並在您的布局中從EditText的子項requestFocus中刪除:

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="15dp"
    android:ems="10" >
    <requestFocus />
</EditText>
    getActivity().getWindow().setSoftInputMode(
                  WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM