画面をスクロールしてテキストフィールドが表示されるようにする方法はありますか?
15 に答える
私も同じ問題を抱えていました。次のコードを試してください。
android:windowSoftInputMode="adjustPan"
入力を保持するアクティビティのアクティビティタグのmanifest.xmlに追加します。例:
<activity
android:name=".Activities.InputsActivity"
...
android:windowSoftInputMode="adjustPan"
/>
ソフトキーボードが開いたときに表示されるものを制御する方法を尋ねていますか?windowSoftInputModeで遊んでみてください。詳細については、開発者向けドキュメントを参照してください。
画面の下部に配置された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全体が上に移動し、ソフトキーボード用のスペースが確保されます。
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に設定すると役立ちます。
あなたがする必要があるのは
android:isScrollContainer="true"
ソース:http ://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/
古いスレッドを復活させて申し訳ありませんがandroid:imeOptions="flagNoFullscreen"
、EditText要素の設定については誰も言及していません
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"
android EditTextで機能しますが、webviewまたはxwalkviewでは機能しません。ソフトキーボードが使用しているwebviewまたはxwalkviewの入力を非表示にする場合android:windowSoftInputMode="adjustResize"
トラックボールを使ってスクロールさせることができると思います。これは、最終的には選択方法によってプログラムで実現できる可能性がありますが、それは単なるアイデアです。トラックボールの方法が通常は機能することは知っていますが、これを実行してコードから機能させる正確な方法については、よくわかりません。
お役に立てば幸いです。
キーボードカバーがonCreat()メソッドのアクティビティ内でtext.insideを編集する相対アクティビティにこの1行を追加します。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
追加するだけ
android:gravity="bottom" android:paddingBottom="10dp"
edittextのサイズに応じてpaddingBottomを変更します
私はこれが古いことを知っていますが、上記の解決策のどれも私のために働きませんでした。徹底的なデバッグの後、私は問題を理解しました。android:windowTranslucentStatus
解決策は、styles.xmlで属性をfalseに設定することです。
EditTextフィールドがキーボードでカバーされている場合次のコードを使用します。
EditText= findViewById(R.id.edittext)
EditText?.getParent()?.requestChildFocus(EditText,EditText)
カーソルをFocusedEditTextに配置し たい場合は、FocusedEditText でフォーカスとカーソルを取得するのに役立つEditText.requestFocus()
後に使用します。EditText?.getParent()?.requestChildFocus(EditText,EditText)
上記の解決策は完全に機能しますが、フルスクリーンアクティビティ(半透明のステータスバー)を使用している場合、これらの解決策は機能しない可能性があります。したがって、フルスクリーンの場合は、アクティビティのonCreate関数内でこのコードを使用します。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN , WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN );
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR);
}
例:
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN , WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN );
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR);
}
super.onCreate(savedInstanceState);
AndroidManifest.xmlを編集します
android:windowSoftInputMode="adjustResize"
これをレイアウトファイルのルートビューに追加します。
android:fitsSystemWindows="true"
それで全部です。
私は同じ問題を抱えていて、追加すると言われている人々を検索しましたadjustPan
が、私の場合adjustResize
はうまくいきました。
<activity
android:name=".YOUR.ACTIVITY"
...
android:windowSoftInputMode="adjustResize"
/>