AndroidソフトキーボードがEditTextフィールドをカバー


回答:


163

ソフトキーボードが開いたときに表示されるものを制御する方法を尋ねていますか?windowSoftInputModeで遊んでみてください。詳細については、開発者向けドキュメントをご覧ください。


2
これは正常に機能しますが、カスタムダイアログスタイルを使用している場合は、ダイアログスタイルに<item name = "android:windowIsFloating"> true </ item>が含まれていることを確認してください。
ドミトリーChistyakov 2013年

これは横向きモード(Nexus 7)では機能しないようです。編集可能な要素はキーボードの下に隠れたままです。windowSoftInputModeのさまざまな組み合わせを試しました。ActionBarがサポートしていないため、windowIsFloatingを設定できないようです。それとも、私のEditTextがリストビューアイテム内にあるという事実と関係があるのでしょうか。
Sampo Sarrala-codidact.org 2014年

これらに<item name = "android:windowTranslucentStatus"> true </ item>を追加すると、これは機能しません。誰かがこれを修正しますか?
最大

1
@Max android:fitsSystemWindows="true"これを解決するには、ルートビューに追加します。
David Passmore、2015年

1
どのような....ソフトキーボードは何のWhatsAppのように関係なく利用可能であるとき、キーボードの上の完全なレイアウトを引っ張るについて
KarueベンソンKarue

162

同じ問題がありました。次のコードを試してください:

android:windowSoftInputMode="adjustPan"

入力を保持するアクティビティのアクティビティタグのmanifest.xmlに追加します。例:

<activity
            android:name=".Activities.InputsActivity"
            ...
            android:windowSoftInputMode="adjustPan"
            />

14
最も簡単な答え!ちょうどメモとして、これはマニフェストファイルと必要なアクティビティの下に追加する必要があります。
NRR 2014年

4
私の場合、これは少なくとも私のhtmlを台無しにすることはありませんadjustResizeが、私の入力フィールドもカバーしています
Rahul Dole

8
これは私には
役立た

1
@ vikifor、edittextを必ずscrollviewに追加してください。レイアウトに3つから4つのフィールドしかない場合でも、すべてのフィールドをscrollviewに追加します。これにより、仮想キーボードが開いたときにスクロール可能になります。
Kuldeep Sakhiya、2015年

正常に動作しますが、EditTextビューをタッチするたびに、キーボードが再描画されます。
2016

55

画面の下部に配置されたEditTextビューの上にソフトキーボードがある場合、同じ問題が発生しました。AndroidManifest.xmlファイルの関連アクティビティに1行追加することで、解決策を見つけることができました。

android:windowSoftInputMode="adjustResize|stateHidden"

アクティビティタグ全体は次のようになります。

<activity
        android:name="com.my.MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/title_activity_main"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>

ここで最も重要な値はadjustResizeです。これにより、UI全体が上に移動し、ソフトキーボード用のスペースが確保されます。


しかし、CSSのパーセンテージ値がほとんどの場合、これはHTMLの外観を台無しにする可能性があります
Rahul Dole

ここで推測していますか、それとも試しましたか?ところで、それはあなたのhtmlを台無しにするべきではありません。私はウェブビューで試しました。それは個々の要素ではなく全体の見方を変えます。
DanKodi 2014年

1
私はそれを試してみました。私のcssがほとんどパーセンテージの値を持っているので、それは起こると思います
Rahul Dole

@DanKodi試してみましたがadjustResize|stateHidden、との違いはありませんでしたadjustPan
IgorGanapolsky 2015

25

スクロールしたいものをラップするScrollViewを追加してみませんか。これが私が行った方法です。実際には、スクロールしないヘッダーを上に残し、ソフトパッドを開くとダイアログウィジェット(特にEditTexts)がスクロールします。

<LinearLayout android:id="@+id/HeaderLayout" >
  <!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
  <!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>

通常、ScrollView内にLinearLayoutを配置しますが、それはあなた次第です。また、少なくとも私のデバイスでは、ScrollbarスタイルをoutsideInsetに設定すると役立ちます。


4
Mayraの答えは誰もがすべきこと(そしておそらくGoogleが誰もがすべきだと思ったこと)ですが、これは私がほとんどいつもやっていることです。これは、表示を正しくするために必要な実際のコントロールを取得する唯一の方法です。はぁ。
Scott Biggs

スコットのコメントを過小評価しないでください。それは本当です。私の場合、リストビューのサイズ変更やパンはしたくありませんでしたが、そのリストの最後にあるeditTextを取り上げたいと思いました。だから、私はeditTextをscrollViewに入れました。
ダーパン2015年

15

あなたがする必要があるのは

android:isScrollContainer="true"

ソース:http : //www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/


1
答え自体はあまり役に立ちませんでしたが(属性は必要ありません)、リンクされたソースには完全な説明が含まれています(フォームはScrollViewに埋め込まれている必要があります)。ありがとう!
johndodo 2016

同様に、ページ上の何も私を助けませんでしたが、リンクは、windowSoftInputModeアクティビティにadjustResizeを追加することを示し、それは機能しました。
スティーブンスミス2017

14

古いスレッドを復活させて申し訳ありませんandroid:imeOptions="flagNoFullscreen"が、EditText要素の設定について誰も言及していません


7
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"

android EditTextでは機能しますが、webviewまたはxwalkviewでは機能しません。ソフトキーボードが使用しているwebviewまたはxwalkviewの入力を非表示にする場合android:windowSoftInputMode="adjustResize"


4

私は、トラックボールを使用してスクロールさせることができると信じています。これは、最終的には選択メソッドを介してプログラムで達成される可能性がありますが、それは単なるアイデアです。トラックボールの方法が通常は機能することは知っていますが、これを実行してコードから機能させるための正確な方法については、わかりません。
お役に立てば幸いです。


私が必要と思うのは、ビューをスクロールできるようにウィンドウを「人工的に」長くする方法です。現在、RelativeLayoutはandroid:layout_width = "wrap_content" android:layout_height = "wrap_content"に設定されています
Alexis

そのとき私は解決策を知りません。おそらく、「wrap_content」が解決している値までそれらをさらに引き伸ばすことにより、必要に応じて幅と高さの値を手動で調整したい場合があります。
Luis Miguel Serrano、2010

1

この1行を、アクティビティのキーボードカバーの編集text.inside onCreat()メソッドの相対アクティビティに追加します。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0

私はこれが古いことを知っていますが、上記の解決策はどれもうまくいきませんでした。広範囲にわたるデバッグの後、私は問題を理解しました。解決策はandroid:windowTranslucentStatus、私のstyles.xmlで属性をfalseに設定することです


0

EditTextフィールドがキーボードでカバーされている場合次のコードを使用します。

    EditText= findViewById(R.id.edittext)
    EditText?.getParent()?.requestChildFocus(EditText,EditText)

あなたがしたい場合はカーソルが使用よりも集束のEditTextにあることが EditText.requestFocus()後にEditText?.getParent()?.requestChildFocus(EditText,EditText) 集束のEditTextで焦点とカーソルを取得するために役立ちます。


-1

AndroidManifest.xmlを編集する

android:windowSoftInputMode="adjustResize"

これをレイアウトファイルのルートビューに追加します。

android:fitsSystemWindows="true"

それで全部です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.