由于本人懒也从不写博客之所以写是因为这次开发 ’又遇到‘ 输入法这个问题了好久以前有遇到过突然发现还是很有必要把他分享出来,言归正传,下面就把解决的几种方法贴上。

1,首先看效果图:




2,实现效果图 (输入框没被遮住):



解决方法一:

在 AndroidManifest.xml 文件中的activity里加入 android:windowSoftInputMode="stateVisible|adjustResize"

                              


解决方法二:

在 Activity  的 onCreate 里加入    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

public class TestActivity extends FragmentActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test);        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);        }

解决方法三:

把你的 Layout  外面再加一层 ScrollView  , 这样软键盘和输入框就可以一起滚动

        

解决方法四: 

1,Activity 代码

public class TestActivity extends FragmentActivity {// 最外层需要调整的Layoutprivate RelativeLayout rootView;// 滚动的Layoutprivate LinearLayout scrollToInput;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test);                        rootView = (RelativeLayout) findViewById(R.id.rootView);        scrollToInput = (LinearLayout) findViewById(R.id.scrollToInput);                rootView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() {              @Override              public void onGlobalLayout() {                  Rect rect = new Rect();                  //取得 rootView 可视区域                  rootView.getWindowVisibleDisplayFrame(rect);                  //取得 rootView 不可视区域高度 (被其他View遮挡的区域高度)                  int rootInvisibleHeight = rootView.getRootView().getHeight() - rect.bottom;                  //要是不可视区域高度大于100,则输入键盘就显示                  if (rootInvisibleHeight > 100) {                      int[] location = new int[2];                      //取得 scrollToInput 的坐标                      scrollToInput.getLocationInWindow(location);                      //计算滚动高度(rootView),这样 (scrollToInput)在可视区域                      int srollHeight = (location[1] + scrollToInput.getHeight()) - rect.bottom;                      rootView.scrollTo(0, srollHeight);                  } else {                      //隐藏软键盘                      rootView.scrollTo(0, 0);                  }              }        });      }}

2,activity_test.xml 

                


以上方法都是经过我测试过的,要是以上方法前三种有的不可行(可能是布局嵌套层次过多,总之跟布局有些关系),可以使用第四种方法解决,如有疑问,或者有什么看法,可以一起讨论。

更多相关文章

  1. Android魔法(第三弹)—— 一步步实现对折页面
  2. 打造Android万能上拉下拉刷新框架--XRefreshView(三)
  3. Qt on Android,输入法弹出后,界面无法自适应
  4. android中fitsSystemWindows的用处
  5. [置顶] android利用zbar二维码扫描-(解决中文乱码及扫描区域定义
  6. Android如何获取系统高度、标题栏和状态栏高度
  7. Android(安卓)自定义WheelView滚动控件
  8. Android中软键盘监听
  9. 添加自定义风格的titleBar栏

随机推荐

  1. ASP.NET MVC如何正确运用异步编程技术
  2. C#中关于静态与非静态方法的区别介绍
  3. C#如何使用键值对取代Switch...Case语句
  4. C#中关于Dictionary的用法详解
  5. C#中使用反射以及特性简化的实例代码
  6. C#如何使用Socket发送HTTP/HTTPS请求实例
  7. C#制作ActiveX控件中如何调用海康SDK的问
  8. C#中关于反射和dynamic最佳组合的示例分
  9. C#中面向对象设计七个原则介绍
  10. 有关C#工厂模式简单讲解