很常见的一种效果,点击评论弹出输入框,点空白区域或点“发送”后输入框消失并收起键盘,通常会遇到键盘遮挡输入框问题,使用Dialog的方式解决这个问题相对简单点,更重要是能代码模块化增加复用性。

dialog_family_dynamic_comment.xml 评论布局文件

<?xml version="1.0" encoding="utf-8"?>                    

FamilyDynamicCommentDialog.java

import android.app.Activity;import android.app.Dialog;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.support.annotation.NonNull;import android.view.LayoutInflater;import android.view.View;import android.view.inputmethod.InputMethodManager;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.careeach.health.ui.view.FamilyDynamicView;import java.util.Objects;/** * 家庭动态评论 */public class FamilyDynamicCommentDialog extends Dialog {    private EditText etContent;    private FamilyDynamicView familyDynamicView;    public FamilyDynamicCommentDialog(@NonNull Context context, FamilyDynamicView familyDynamicView) {        super(context, R.style.DialogFullScreen);        this.familyDynamicView = familyDynamicView;        Objects.requireNonNull(getWindow()).setBackgroundDrawable(new ColorDrawable());        View view = LayoutInflater.from(context).inflate(R.layout.dialog_family_dynamic_comment, null, false);        etContent = (EditText) view.findViewById(R.id.et_content);        Button btnSend = (Button) view.findViewById(R.id.btn_send);        setContentView(view);        view.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                dismiss();            }        });        btnSend.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String content = etContent.getText().toString().trim();                if (content.length() == 0) {                    Toast.makeText(getContext(), getContext().getString(R.string.toast_please_input_comment_content), Toast.LENGTH_SHORT).show();                    return;                }                FamilyDynamicCommentDialog.this.familyDynamicView.clickCommentSend(content);                dismiss();            }        });    }    @Override    public void dismiss() {        etContent.setFocusable(false);        etContent.setFocusableInTouchMode(false);        InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);        inputMethodManager.hideSoftInputFromWindow(etContent.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);        super.dismiss();    }    @Override    public void show() {        super.show();        etContent.setFocusable(true);        etContent.setFocusableInTouchMode(true);        etContent.requestFocus();        etContent.post(new Runnable() {            @Override            public void run() {                InputMethodManager inputMethodManager = (InputMethodManager) getContext().                        getSystemService(Context.INPUT_METHOD_SERVICE);                inputMethodManager.toggleSoftInput(0,                        InputMethodManager.HIDE_NOT_ALWAYS);            }        });    }}

FamilyDynamicView为回调接口,因为使用是mvp结构,可根据实据情况回调即可。这里通过familyDynamicView.clickCommentSend(content)来回调触发发送功能。

R.style.DialogFullScreen 让Dialog全屏。

使用

FamilyDynamicCommentDialog familyDynamicCommentPopup = new FamilyDynamicCommentDialog(this,this);familyDynamicCommentPopup.show();

更多相关文章

  1. Android(安卓)软件盘不自动弹出解决办
  2. 2013.4.8
  3. Android用软键盘将整个界面推上去
  4. EditText软键盘弹出相关问题
  5. Android(安卓)输入法键盘遮挡控件问题的解决办法
  6. android学习日记:拨号按键声音自定义
  7. android 自动弹起键盘
  8. Android(安卓)startService 启动自动解锁点亮屏幕
  9. Android自定义数字键盘解析

随机推荐

  1. Android开发前奏
  2. 【Android工场】Android(安卓)Input Syst
  3. android基础入门控件详解(3)
  4. 界面布局
  5. Android(安卓)Animation学习笔记
  6. Android(安卓)Studio加速
  7. Android(安卓)进阶16:IntentService 使用
  8. android迁移到androidx问题解决
  9. webview开发-适配多分辨率的Android设备
  10. Android(安卓)UI开发第十七篇——Android