Android自己定义dialog中的EditText无法弹出键盘的解决
近期我独立开发的项目《全医会》已经在内測其中了。非常快将会上架到各大应用市场。之前开发的几个项目都由于一些原因没有上架还是比較遗憾的。所以,近期我心情格外的好。 
今天在做一个新项目,专为律师和客户开发的APP。其中有一个自己定义对话框的需求。这个知识点事实上非常easy,就是下图这个效果: 
 
但是当我悠闲的写完以后才发现。自己定义对话框里面嵌套的EditText根本无法获取焦点。无法弹出软键盘,郁闷,曾经开发的软件里面没有EditText的时候一切正常。没有发现这个隐藏的坑。下图是我之前写的一个自己定义对话框: 
以下来解决问题: 
1、对话框的布局文件:
<?
xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="260dp"
        android:orientation="horizontal" >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="240dp"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:layout_marginTop="20dp"
            android:background="@drawable/round_white_corner"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:paddingLeft="15dp"
            android:paddingRight="15dp" >
            <EditText
                android:id="@+id/et_obj"
                style="@style/DarkTextViewTheme"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_marginTop="30dp"
                android:background="@drawable/round_textview_corner"
                android:gravity="center_vertical"
                android:hint="输入标的"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textSize="14sp" />
            <EditText
                android:id="@+id/et_name"
                style="@style/DarkTextViewTheme"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_marginTop="12dp"
                android:background="@drawable/round_textview_corner"
                android:gravity="center_vertical"
                android:hint="联系人姓名"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textSize="14sp" />
            <EditText
                android:id="@+id/et_phone"
                style="@style/DarkTextViewTheme"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_marginTop="12dp"
                android:background="@drawable/round_textview_corner"
                android:gravity="center_vertical"
                android:hint="联系人电话"
                android:inputType="phone"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textSize="14sp" />
            <TextView
                android:id="@+id/tv_go"
                android:layout_width="110dp"
                android:layout_height="35dp"
                android:layout_marginBottom="20dp"
                android:layout_marginTop="25dp"
                android:background="@drawable/round_blue_corner"
                android:gravity="center"
                android:text="确认托付"
                android:textColor="@color/white"
                android:textSize="16sp" >
            </TextView>
        </LinearLayout>
        <ImageView
            android:id="@+id/iv_close"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:layout_marginLeft="-50dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/law_dialog_close" />
    </LinearLayout>
</LinearLayout>2、自己定义dialog的代码
        // 弹出自己定义dialog
        LayoutInflater inflater = LayoutInflater.from(OnlineActivity.this);
        View view = inflater.inflate(R.layout.hl_law_dialog, null);
        // 对话框
        final Dialog dialog = new Dialog(OnlineActivity.this);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.show();
        // 设置宽度为屏幕的宽度
        WindowManager windowManager = getWindowManager();
        Display display = windowManager.getDefaultDisplay();
        WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
        lp.width = (int) (display.getWidth()); // 设置宽度
        dialog.getWindow().setAttributes(lp);
        dialog.getWindow().setContentView(view);
        final EditText et_obj = (EditText) view.findViewById(R.id.et_obj);// 标的
        final EditText et_name = (EditText) view.findViewById(R.id.et_name);// 姓名
        final EditText et_phone = (EditText) view.findViewById(R.id.et_phone);// 电话
        TextView tv_go = (TextView) view.findViewById(R.id.tv_go);// 确认托付
        final ImageView iv_close = (ImageView) view.findViewById(R.id.iv_close);// 确认托付以上就是正确的写法,那么我错在哪里了呢? 
之前我的写法是
// 对话框
        final Dialog dialog = new AlertDialog.Builder(OnlineActivity.this).create();
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.show();因此仅仅要将AlertDialog换成Dialog就可以解决问题。
试想: 
1、假设不加这段代码是什么效果?
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
如图。出现了丑陋的标题栏。
2、假设不加这段代码是什么效果?
WindowManager windowManager = getWindowManager();
        Display display = windowManager.getDefaultDisplay();
        WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
        lp.width = (int) (display.getWidth()); // 设置宽度
        dialog.getWindow().setAttributes(lp); 
如图。对话框变得这么窄。
Android自己定义dialog中的EditText无法弹出键盘的解决的更多相关文章
- android中自定义的dialog中的EditText无法弹出输入法解决方案
		1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ... 
- Android中使EditText失去焦点,edittext禁止弹出键盘[转]
		转自http://www.cnblogs.com/yejiurui/archive/2013/01/02/2841945.html 在我们的应用中,有时候一进入一个页面, EditText默认就会自动 ... 
- Android-------- AlertDialog中EditText无法弹出输入法的解决
		文章转自:http://21jhf.iteye.com/blog/2007375: 如果AlertDialog中有编辑录入框(newMainLayout里面动态创建了EditText控件),show后 ... 
- 关于Android中EditText自动获取焦点并弹出键盘的相关设置
		在android开发中,关于EditText自动获取焦点弹出键盘,我们可能又是会有让键盘自动弹出的需求,有时可能又会有不想让键盘自动弹出的需求,下面是我所总结的两种方法: 需求:EditText自动获 ... 
- 46.Android 自己定义Dialog
		46.Android 自己定义Dialog Android 自己定义Dialog 前言 提示Dialog 提示Dialog 效果图 菜单Dialog 菜单Dialog 效果图 DialogActivi ... 
- Android EditText 不弹出输入法
		当第一次进入一个activity的时候 一般是第一个edittext是默认选中的,但是该死的软键盘也一起弹出来了 那是相当的不美观哈!(#‵′)凸.为此, 本大人就去寻找在刚进入这个activity ... 
- Android EditText不弹出输入法焦点问题的总结
		转自:http://mobile.51cto.com/aprogram-403138.htm 看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的 ... 
- android 闹钟提醒并且在锁屏下弹出Dialog对话框并播放铃声和震动
		android 闹钟提醒并且在锁屏下弹出Dialog对话框并播放铃声和震动 1.先简单设置一个闹钟提醒事件: //设置闹钟 mSetting.setOnClickListener ... 
- Android EditText不弹出输入法总结,焦点问题的总结
		看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属相:android:windowSoftInputMod ... 
随机推荐
- Spring Boot . 4 -- 定制 Spring Boot 配置
			覆写 Auto-Configuration 的类 利用外部属性进行动态配置 [本文] 定制 Error 页面 [第二篇] Spring Boot的自动配置可以节省很多无趣的配置工作,但是并不是所有的自 ... 
- oracle调用存储过程和函数返回结果集
			在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ... 
- 怎样从SpringMVC返回json数据
			Srping3中配置 maven依赖pom.xml 需要jackson库的依赖 <dependency> <groupId>org.codehaus.jackson</g ... 
- iOS Development Sites
			iOS Development Sites 学习iOS开发有一段时间了,虽然还处于迷茫期,但相比以前的小白痴状态,现在还是蛮有改观的.期间接触了一些很好的网站和博客,现在摘录下来,就当建个索引,没 ... 
- react之webpack
			1. 下载相关模块包 * 创建package.json ``` npm init ``` * react相关库 package-lock.json ``` npm install react reac ... 
- windows系统查看目录树
			进入到需要查看的目录后,按住shift键,然后单击鼠标右键,选择“在此处打开命令窗口”,然后命令行窗口界面. 1.若是只查看该目录下有哪些目录,输入tree即可 2.若是显示该目录及其子目录下的所有目 ... 
- Ajax实现跨域访问最新方式
			在实际项目当中,我们经常会遇到同一个域名下不同项目之间通过Ajax相互调用数据,这样问题就来了,如何通过Ajax实现跨域呢? 解决方案 1.Jsonp Jsonp解决跨域相对简单,服务器无需任何配置. ... 
- django-2 models
			一个model 对应DB的一张表 models 以类的形式表现: 一些字段.数据的一些行为 对类.类的对象 操作,无需写SQL = > object relation mapping ORM ... 
- Python Pandas库的学习(一)
			今天我们来学习一下Pandas库,前面我们讲了Numpy库的学习 接下来我们学习一下比较重要的库Pandas库,这个库比Numpy库还重要 Pandas库是在Numpy库上进行了封装,相当于高级Num ... 
- json数据的格式,JavaScript、jQuery读取json数据
			JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON的特点: JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级 ... 
