让 ScrollView 中的视图底部组件,随ScrollView居中

洪飞扬
2023-12-01

//项目清单中隐藏一打开界面就显示的软键盘  当前类 +   android:windowSoftInputMode="stateHidden"属性

//oncreate中

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//设置隐藏软件盘后的光标 ,点击文本输入框显示软键盘

setContentView(R.layout.activity_baoming1);

//最大的布局ID

RelativeLayout mRoot = (RelativeLayout) findViewById(R.id.root);  
tijiao=(Button) findViewById(R.id.bt_tijiao1); 

       controlKeyboardLayout(mRoot, tijiao);  



private void controlKeyboardLayout(final View root, final View scrollToView) {  
       root.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() {  
           @Override  
           public void onGlobalLayout() {  
               Rect rect = new Rect();  
               //获取root在窗体的可视区域  
               root.getWindowVisibleDisplayFrame(rect);  
               //获取root在窗体的不可视区域高度(被其他View遮挡的区域高度)  
               int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom;  
               //若不可视区域高度大于100,则键盘显示  
               if (rootInvisibleHeight > 100) {  
                   int[] location = new int[2];  
                   //获取scrollToView在窗体的坐标  
                   scrollToView.getLocationInWindow(location);  
                   //计算root滚动高度,使scrollToView在可见区域  
                   int srollHeight = (location[1] + scrollToView.getHeight()) - rect.bottom;  
                   root.scrollTo(0, srollHeight);  
               } else {  
                   //键盘隐藏  
                   root.scrollTo(0, 0);  
               }  
           }  
       });  
   }  

 类似资料: