私は3つのフラグメントを持つViewPagerを使用します。 最初の文字はテキストのみです。 2番目の入力フィールド。 3番目のテキストのみ。Android ViewPagerはソフトキーボードを間違った場所に表示します
フォーカスが入力フィールドに設定されているため、ViewPagerを初期化すると、ソフトキーボードが表示されます。 フラグメントの順序を変更すると、ソフトキーボードは表示されません。
ViewPagerでフォーカスとソフトキーボードを制御する方法はありますか?
よろしく
私は3つのフラグメントを持つViewPagerを使用します。 最初の文字はテキストのみです。 2番目の入力フィールド。 3番目のテキストのみ。Android ViewPagerはソフトキーボードを間違った場所に表示します
フォーカスが入力フィールドに設定されているため、ViewPagerを初期化すると、ソフトキーボードが表示されます。 フラグメントの順序を変更すると、ソフトキーボードは表示されません。
ViewPagerでフォーカスとソフトキーボードを制御する方法はありますか?
よろしく
私はこれを行うには良い方法があると確信しているが、私は同じ問題を抱えていたと私はフォーカス可能に親View
を設定することで、周りにそれを得ました。あなたがページ間をスワイプするときにフォーカスを受け取ることができませんポップアップからソフトキーボードを引き起こしているものは何でもそのように、...
<!-- Dummy item to prevent your View from receiving focus -->
<LinearLayout
...
android:focusable="true"
android:focusableInTouchMode="true" />
<!-- The view(s) that are causing the keyboard to pop up each time you swipe -->
<EditText ... />
</LinearLayout>
悲しいことに、悲しいことに、 edittexts。 – Timmmm
私がこれまでに見つけた最良の解決策は、あなたの活動のマニフェストにandroid:windowSoftInputMode="stateHidden"
を使用することであり、これをあなたの活動に加えてください。
@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);
}
}
}
私はスワイプアニメーションを非表示キーボードアニメーションネジのでonPageSelected()
を使用していませんでした。また、入力不要フラグメントにスワイプしてもキーボードは隠されていないので、android:focusable
トリックは使用しませんでした。私はあなたが上記のコードと組み合わせることができると思いますが。
皆様に感謝して、Timmmmは非常に役に立ちました。 私は最終的にすべてを包んで、タブスワイピングのための完全なソフトキーボード非表示のソリューションを得ました。 それぞれに4つのタブがあり、スワイプ時にキーボードを隠す必要があります。活動コードに追加された
<!--Fixes keboard pop-up-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="true">
</LinearLayout>
は(Timmmmの答えと少し違いに気付く: 私は、フラグメントレイアウトにこれを追加私はここに
mViewPager.getCurrentItem() == 0
を持っていない、私は非表示にする必要があるため、すべてのビューのためのキーボード:
:
// When swiping between different sections, select the corresponding
// tab. We can also use ActionBar.Tab#select() to do this if we have
// a reference to the Tab.
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (actionBar != null) {
actionBar.setSelectedNavigationItem(position);
}
}
@Override
public void onPageScrollStateChanged(int state)
{
if (state == ViewPager.SCROLL_STATE_IDLE)
{
// Hide the keyboard.
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(mViewPager.getWindowToken(), 0);
}
}
});
そして、ここではのAndroidManifest.xmlでの活動であります
<activity
android:name=".TestActivity"
android:label="@string/title_activity_test"
android:parentActivityName=".MainActivity"
android:windowSoftInputMode="stateHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.atrinax.test.MainActivity" />
</activity>
ソフトキーボードを強制的に非表示にすることができます。もっと詳しくはこちら: http://stackoverflow.com/questions/1109022/how-to-close-hide-the-android-soft-keyboard –