ソフトキーボードのポップアップレイアウトを上に移動


一、要約
会社の登录の机能はソフトキーボードを弾き出すことを実现させて、レイアウトのスライドの効果は登录のボタンを突き上げることを使用して、ネット上で多くの资料を调べて、大部分はすべてadjustPan|stateVisibleの属性を追加して、しかし问题は私のインタフェースの効果はあまり効果がなくて、それはただ入力の枠の底まで弾き出すだけで、望む効果までまだとても大きい违いがあります.Linearlayoutの重み+ScrollViewで直接実現するというネットユーザーもいるが、効果もあまり理想的ではない.
二、機能実現
ログインページのソフトキーボードトップ機能を実現し、主に以下の機能を使用した.
1)ScrollView+LinearLayoutウェイト効果;
2)上に上げるコントロールを設定し、上へのスライド距離を計算します.
三、レイアウト
主なインプリメンテーション:ScrollViewを最外層のコントロールとして使用し、レイアウトでLinearLayoutの重み効果を使用してインタフェースのインプリメンテーションを行います.



    

        

        

            

                
            

            

                

                    

                    
                
              
                

                    

                    
                


            


        

        

            
        

    


四、ソフトキーボードのポップアップレイアウトのスライドを実現する
キーボードがイジェクトされたときにレイアウトがスライドする距離を測定します.
LayoutUtil.controlKeyboardLayout(rlLoginBg, llEmpty);
public class LayoutUtil {

    public static void controlKeyboardLayout(final View root, final View scrollToView) {
        root.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
                        Rect rect = new Rect();
                        root.getWindowVisibleDisplayFrame(rect);
                        int rootInvisibleHeight = root.getRootView()
                                .getHeight() - rect.bottom;
                        if (rootInvisibleHeight > 100) {
                            int[] location = new int[2];
                            scrollToView.getLocationInWindow(location);
                            int srollHeight = (location[1] + scrollToView
                                    .getHeight()) - rect.bottom;
                            root.scrollTo(0, srollHeight);
                        } else {
                            root.scrollTo(0, 0);
                        }
                    }
                });

    }

}

五、まとめ
現在、私のインタフェースソフトウェアのトップログインボタンはこのような方法で実現されており、一つの点が欠けても実現できない.レイアウトのトップの効果は実現されているが、現在、私のログインには迅速なログイン効果があり、検証コードのカウントダウンにはインタフェースのフラッシュの問題があり、現在も解決中であり、どの人が良い解決方法を共有することを望んでいる.