[英]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.