大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在最近做的项目中有碰到要写类似朋友圈的模块,因为要实现评论点赞功能,这里说下我是怎么实现评论功能的。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于做网站、成都网站建设、固阳网络推广、重庆小程序开发公司、固阳网络营销、固阳企业策划、固阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供固阳建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
首先先放上效果图
这里贴上我的代码:
//给评论图标设置点击事件 mIv_header_discuss.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showPopupcomment(); } });
showPopupcomment()方法如下
private PopupWindow popupWindow; private View popupView = null; private EditText inputComment; private String nInputContentText; private TextView btn_submit; private RelativeLayout rl_input_container; private InputMethodManager mInputManager; @SuppressLint("WrongConstant") private void showPopupcomment() { if (popupView == null){ //加载评论框的资源文件 popupView = LayoutInflater.from(context).inflate(R.layout.comment_popupwindow, null); } inputComment = (EditText) popupView.findViewById(R.id.et_discuss); btn_submit = (Button) popupView.findViewById(R.id.btn_confirm); rl_input_container = (RelativeLayout)popupView.findViewById(R.id.rl_input_container); //利用Timer这个Api设置延迟显示软键盘,这里时间为200毫秒 Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { mInputManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); mInputManager.showSoftInput(inputComment, 0); } }, 200); if (popupWindow == null){ popupWindow = new PopupWindow(popupView, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT, false); } //popupWindow的常规设置,设置点击外部事件,背景色 popupWindow.setTouchable(true); popupWindow.setFocusable(true); popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) popupWindow.dismiss(); return false; } }); // 设置弹出窗体需要软键盘,放在setSoftInputMode之前 popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED); // 再设置模式,和Activity的一样,覆盖,调整大小。 popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); //设置popupwindow的显示位置,这里应该是显示在底部,即Bottom popupWindow.showAtLocation(popupView, Gravity.BOTTOM, 0, 0); popupWindow.update(); //设置监听 popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { // 在dismiss中恢复透明度 @RequiresApi(api = Build.VERSION_CODES.CUPCAKE) public void onDismiss() { mInputManager.hideSoftInputFromWindow(inputComment.getWindowToken(), 0); //强制隐藏键盘 } }); //外部点击事件 rl_input_container.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mInputManager.hideSoftInputFromWindow(inputComment.getWindowToken(), 0); //强制隐藏键盘 popupWindow.dismiss(); } }); //评论框内的发送按钮设置点击事件 btn_submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { nInputContentText = inputComment.getText().toString().trim(); if (nInputContentText == null || "".equals(nInputContentText)) { showToastMsgShort("请输入评论内容"); return; } mInputManager.hideSoftInputFromWindow(inputComment.getWindowToken(),0); popupWindow.dismiss(); } }); }
在刚开始显示的时候发现,EditText即评论框被顶到屏幕最上方,然而键盘显示在底部,达不到效果。很多文章都说
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED); popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
这两句代码顺序不能变,然而这样写了之后还是实现不了,自己摸索了半天发现出现这样的问题与评论框的布局也有关系。
所以在这里贴上我的评论框布局
R.layout.comment_popupwindow
<?xml version="1.0" encoding="utf-8"?>
把评论框和发送按钮用LinearLayout包裹,然后在最外层用一个RelativeLayout包裹住,发现这样子评论框就会和软键盘一起弹出来了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。