我有一个包含添加个人信息20+行的片段。 行的确切数目取决于的雇主从应用程序的用户有多少希望。
如果我需要显示的行数大于可用空间更大,具有软键盘的表现,我有其他行移动到下一个屏幕,等等。
这是我Gameplan的:检查我行有多高利润+(简单,硬编码)检查总屏幕高度检查软键盘高度
这会给我足够的信息来计算...你会得到的图片:)
目前似乎没有类似“getSoftKeyboardHeight”,所以我用我的片段这样的代码:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
root = getActivity().getWindow().getDecorView().findViewById(R.id.fragment_container);
root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
int heightDiff = root.getRootView().getHeight() - root.getHeight();
// IF height diff is more then 150, consider keyboard as visible.
Log.d("slideactivity", "total " + root.getRootView().getHeight());
Log.d("slideactivity", "total " + root.getHeight());
Log.d("slideactivity", "heightdiff = " + heightDiff);
}
});
}
日志输出:
08-13 12:37:55.242 D/slideactivity﹕ total 600
08-13 12:37:55.242 D/slideactivity﹕ total 543
08-13 12:37:55.242 D/slideactivity﹕ heightdiff = 57
尽管实际上我一半的屏幕是由软键盘占据。 我开始怀疑..也许键盘只是弹出时,你得到打印的值,所以我没有得到正确的读..我以前在一个异步任务哈克的Thread.Sleep测量之前,但同样的信息想出了。
有谁知道如何解决这个问题? 也许有一些库,做所有的工作? 或者我在找错了地方的解决方案?
任何帮助是非常赞赏,因为我已经查了很多计算器的答案!