先看以下简单的模型图片效果,有图才有真相:
软键盘弹出效果:
终极效果实现:
效果呢就是这样:
简单解释一下:由于显示页面要承载很多的信息内容,所以在让用户发布动态的时候,要求从页面的底部以动画的方式向上抽出。当弹出软键盘输入法的时候,要避免输入框被全部遮挡或者部分遮挡。则,软键盘要把输入文本框顶起来,完全的托起来。
那么,就要完成这几步骤:
1,在该页面的类中(Actiivty或者fragment),在加载该布局之前添加这句话,其作用是使文本框根据软键盘弹出自动调节位置和大小:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
2,完成布局的布置,布局最好使用帧布局把该输入文本框放置最外层的最下面,并设置GONE。
3,在点击发布动态的按钮监听中要实现以动画的效果弹出并被软键盘托起:
Animation animation = AnimationUtils.loadAnimation(getActivity(), R.anim.pop_bottom_in); edtInput.setVisibility(View.VISIBLE); //获取文本输入的焦点 edtInput.startAnimation(animation); edtInput.setFocusable(true); edtInput.setFocusableInTouchMode(true); edtInput.requestFocus(); //弹出软键盘 InputMethodManager inputMethodManager=(InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
edtInput.addTextChangedListener(this);
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub int num=140-s.length(); tvLengthNum.setText(num + ""); }
原文:http://blog.csdn.net/junhuahouse/article/details/38703269