自定义dialog及布局(含EditText、Spinner)的输入设置和软键盘弹出设置
来源:互联网 发布:高晓松 知乎 编辑:程序博客网 时间:2024/05/16 09:38
问题描述:
本来自定义dialog,继承自AlertDialog类,加载自定义布局(内含edittext,spinner及确定、取消按钮),布局效果如下:
完成后发现点击edittext框不能弹出软键盘,无法输入内容。
解决办法:让自定义的dialog继承自dialog类,解决问题。
具体完整代码:
- 自定义的dialog类:
import android.app.Dialog;import android.content.Context;import android.content.res.Resources;import android.content.res.Resources.Theme;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.Window;import android.view.WindowManager;public class MyDialog extends Dialog { private static int default_width = 300; //默认宽度 private static int default_height = 220;//默认高度 public MyDialog(Context context, int layout, int style) { this(context, default_width, default_height, layout, style); } public MyDialog(Context context, int width, int height, int layout, int style) { super(context, style); //set content setContentView(layout); //set window params Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); //set width,height by density and gravity float density = getDensity(context); params.width = (int) (width*density); params.height = (int) (height*density); params.gravity = Gravity.CENTER; window.setAttributes(params); } private float getDensity(Context context) { Resources resources = context.getResources(); DisplayMetrics dm = resources.getDisplayMetrics(); return dm.density; }
注 : 我的dialog代码是在Fragment内完成的,在Activity类中类似,只需把代码中context的值:getActivity()替换为this即可.
在Fragment内初始化的部分代码(import包不再粘贴):
public class MyFragment extends Fragment { ImageView ivAdd;//点击弹出自定义dialog的按钮 View view;//当前fragment的布局@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 创建View对象,并返回,类似BaseAdapter中的getView() if(view == null) { view = inflater.inflate(R.layout.fragment_my, null); } ViewGroup parent = (ViewGroup) view.getParent(); if(parent != null) { parent.removeView(view); } ivAdd = (ImageView) view.findViewById(R.id.iv_my_add); ivAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //弹出自定义的MyDialog对话框 showMyDialog(); } }); }}
自定义dialog方法showMyDialog()代码:
protected void showAlertDialog() { View view = LayoutInflater.from(getActivity()).inflate(R.layout.item_alertdialog_layout,null);// 自定义布局 final MyDialog dialog = new MyDialog(getActivity(),R.layout.item_alertdialog_layout, R.style.MyDialog); Button btnQuXiao = (Button) view.findViewById(R.id.btn_alertdialog_quxiao); EditText etCompany = (EditText) view.findViewById(R.id.et_alertdialog_company); EditText etNumber = (EditText) view.findViewById(R.id.et_alertdialog_number); etCompany.setFocusable(false);//设置第一个edittext不可手动输入内容(即不可获取焦点),必须从右侧的下拉列表中选取 //配置下拉列表 Spinner spCompany = (Spinner) view.findViewById(R.id.iv_alertdialog_company); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.companies, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spCompany.setAdapter(adapter); //为下拉列表设置监听 spCompany.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String company = getActivity().getResources().getStringArray(R.array.companies)[arg2];//获取选择的item内容 etCompany.setText(company);//将下拉列表中选择的item内容填充到前面的edittext中 } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } });}
====> 未完待续
0 0
- 自定义dialog及布局(含EditText、Spinner)的输入设置和软键盘弹出设置
- 设置默认Dialog里面的EditText不弹出软键盘
- android设置EditText不弹出软键盘
- EditText设置软键盘弹出效果
- Android绑定EditText自动弹出自定义软键盘不同按键设置不同背景的实现(自动向上顶适应布局)
- edittext的相关设置及软键盘的设置
- 关于自定义dialog的EditText无法弹出软键盘的bug的解决方案
- Android自定义Dialog 软键盘、大小的设置
- Android开发之将Edittext输入弹出的软键盘设置搜索确定键。详细代码,已验证可用。
- 自定义Dialog中点击EditText无法弹出软键盘的问题
- AlertDialog自定义布局中有editText,不能弹出软键盘
- 解决含EditText页面的软键盘自动弹出问题
- 自定义Dialog弹出软键盘
- edittext不弹出软键盘 及 弹出软键盘后,把整个布局顶起来的问题
- edittext不弹出软键盘 及 弹出软键盘后,把整个布局顶起来的问题
- Dialog中EditText 弹出软键盘
- Android Dialog中的EditText 弹出软键盘
- Dialog中EditText不能弹出软键盘
- 乐视汽车仅靠老贾的哽咽和激情是不够的
- 关于MongoDB最大连接数的查看与修改
- openstack中的tox.ini文件
- Android基础--高德地图定位简单介绍
- iOS APP升级开屏图片不更新显示的问题
- 自定义dialog及布局(含EditText、Spinner)的输入设置和软键盘弹出设置
- hdu 4542 小明系列故事——未知剩余系 数论
- Bug的等级划分
- hdu 1072 Nightmare 搜索,bfs
- 计算机网络的发往本站的帧
- new Date(时间) 加L和不加L是有非常大的不同的
- ES6-Generator与异步操作
- IDEA搭建maven项目
- spring-security api