EditTextポップアップソフトキーボード入力ボックスの問題を隠す

4630 ワード

Activityのレイアウトの下にEditTextがある場合、フォーカスを取得してソフトキーボードを弾き出す場合、処理をしないとソフトキーボードが入力ボックスを遮る可能性があり、ユーザーの提示が悪い、ネット上でも結末案を提出する人が多く、ここで解決の効果を分析する.
EditTextを使用するレイアウトは大きく2つに分けられ、1つはページ表示の内容が欠けたくないことである.例えば、ソフトキーボードがタイトルを画面から押し出し、登録登録検索など、EditTextの多くはページの半分にある.もう1つは、ページの上半分は重要ではありません.例えば、チャットウィンドウ、ソフトキーボードがポップアップするとき、上半分のチャット記録はベース画面の外にあり、EditTextの多くは最下部にあります.その他の場合は本論文に従って選択することができ、結果は一番下にある.
開始:
ネット上でこの問題を解決する方法はいくつかあります.
1.AndroidManifestを修正する.xmlファイル
2.Activityに構成を追加する.
3.レイアウトファイルにScrolVieを追加する.
1.AndroidManifestを修正する.xmlファイル
AndroidManifestでxml対応Activity構成:android:windowSoftInputMode="stateVisible|adjustResize"
<activity
            android:name=".LoginActivity"
            //     ,      
            android:windowSoftInputMode="stateVisible|adjustResize"
            android:screenOrientation="portrait">
activity>

意味:このページは、ソフトキーボードがポップアップすると同時に画面の内容が圧縮され、ソフトキーボードの空間が空ける.
その意味を説明します.
  • stateUnspecified:インタフェースに「android:windowSoftInputMode」が設定されていない場合の状態.この状態は、EditTextのあるインタフェースをポップアップするときにソフトキーボードをポップアップしないものであり、EditTextがフォーカスを取得するときにソフトウェアディスク
  • をポップアップする.
  • stateUnchanged:状態は変わらず、前のインタフェースと同様に、前のインタフェースからソフトキーボードがポップアップされ、このインタフェースにジャンプするとソフトキーボードもポップアップ状態になることを意味する.
  • stateHidden:キーボードを隠して、このインタフェースをポップアップするとき、前のインタフェースがどんな状態であっても、このインタフェースのソフトキーボードは隠しています.
  • stateAlwaysHidden:ずっと隠しています(上との違いは未知で、試してみられません).
  • stateVisible:ソフトキーボードを強制的にイジェクトする.インタフェースにジャンプすると、EditTextがなくてもキーボードがポップアップする.
  • stateAlwaysVisible:キーボードを常に表示する(同上).

  • ここからは内容についても、本文についても
  • adjustUnspecified:デフォルトです.画面がScrowViewに包まれていない場合、キーボードは一部の内容をブロックし、画面がScrowViewに包まれている場合、ScrowViewの内容をスクロールさせてソフトキーボードを置く.
  • adjustResize:メインインタフェースは、ソフトキーボードを配置するためにスケールされる(図1][図2]).

  • *adjustPan:メイン画面は拡大縮小せず、ソフトキーボードを上に移動して配置する(図3][図4]).
    上の2つの違いは、内容がlistviewであれば、現実の一番下のitemの後にソフトキーボードがポップアップされると、adjustResizeはlistviewの下にソフトキーボードで遮られ、adjustPanは現実の一番下のitemである.
    2.Activityに構成を追加
    このActivityのonCretae()のsetContentView()メソッドの前に、*getWindow()を追加します.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)*
    意味:Layout全体に焦点を当てたEditTextを上に出し、余分な空間を圧縮しない.
    彼らの意味を説明します.
  • SOFT_INPUT_ADJUST_NOTHING:調整しない(入力方式は完全に直接上書きされ、このパラメータは開放されていない);
  • SOFT_INPUT_ADJUST_PAN:Layout全体を上に出してフォーカスを得るEditText、余分な空間を圧縮しない
  • SOFT_INPUT_ADJUST_RESIZE:Layout全体を再編成し、余分な空間を再割り当てする.
  • SOFT_INPUT_ADJUST_UNSPECIFIED:システム自身がコンテンツに基づいて上の2つの方式の1つを選択する実行(デフォルト構成).

  • ここSOFT_INPUT_ADJUST_RESIZEとSOFT_INPUT_ADJUST_PANと上のadjustResizeとadjustPanの効果は同じです.
    @Overrideprotected
     void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //            
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
        setContentView(R.layout.activity_login);
        init();
    }

    3.レイアウトファイルにScrollViewを追加する
    ScrollViewは、ポップアップされたソフトキーボードをレイアウトの下に追加することができ、一部のレイアウトを遮ることができない.ここでは、上のadjustResizeとadjustPanの2つの状態とともに使用することが多い.レイアウト:
    
        
            
            
        
    
    

    上に移動する方法を設定します.
    
    

    圧縮方法の設定:
      
    

    結果:ソフトキーボードのイジェクトがレイアウトに影響を与える限り、ScrolViewでレイアウトをラップ、ラップされた内容はスクリーン外のコンテンツをスケールまたは押し出し可能である.そしてEditTextの位置からadjustResizeかadjustPanかを判断する.adjustResizeはシュリンクadjustPanは上押し個人推薦、登録登録用adjustResize、チャットウィンドウ用adjustPan