如何在自己的Activity中去控制EditText的焦点
在进入一个Activity时,如果这个Activity中有EditText,则这个EditText会自动获取焦点,然后就会弹出软键盘,这样给用户体验不是很好。所以一般会通过代码控制让EditText不获取焦点。常用的方式如下,在Activity的布局文件中加上如下代码:
<!-- 输入焦点控制 -->
<LinearLayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
在日前开发的一个项目中界面中除了EditText就是Spinner 和Button等空间,EditText 获取焦点以后,点击Spinner总是无法移除焦点:采取如下方式解决,
当点击Spinner时让EditText失去焦点即可:(见标红代码)
// 初始化两个LayoutInflater对象
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); et_name = (EditText) findViewById(R.id.et_name);
ib_add = (ImageButton) findViewById(R.id.ib_add);
ib_clear = (Button) findViewById(R.id.ib_clear);
ib_query = (Button) findViewById(R.id.ib_query);
ib_down = (Button) findViewById(R.id.ib_down);
ib_save = (Button) findViewById(R.id.ib_save);
ib_back = (ImageButton) findViewById(R.id.ib_back);
// ib_sex = (ImageButton) findViewById(R.id.ib_sex) ; ib_add.setOnClickListener(this);
ib_clear.setOnClickListener(this);
ib_query.setOnClickListener(this);
ib_down.setOnClickListener(this);
ib_save.setOnClickListener(this);
ib_back.setOnClickListener(this);
// ib_sex.setOnClickListener(this) ; // 性别
ArrayAdapter<String> sexAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
sexAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
String sexString;
sexAdapter.clear();
int position = 0;
for (int i = 0; i < sexList.length; i++) {
sexString = sexList[i];
sexAdapter.add(sexString);
}
sp_sex = (Spinner) findViewById(R.id.sp_sex);
sp_sex.setAdapter(sexAdapter);
sp_sex.setFocusable(true);
sp_sex.setSelection(position);
sp_sex.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
et_name.clearFocus();
return false;
}
});
sp_sex.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
et_name.clearFocus();
return false;
}
});
sp_month.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
et_name.clearFocus();
return false;
}
});
sp_customerlevel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView v1 = (TextView) view;
if (v1 != null)
v1.setTextColor(Color.BLACK); // 可以随意设置自己要的颜色值
} @Override
public void onNothingSelected(AdapterView<?> parent) { }
}); // 出生月份
ArrayAdapter<String> monthAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
String monthString;
monthAdapter.clear();
position = 0;
for (int i = 0; i < monthList.length; i++) {
monthString = monthList[i];
monthAdapter.add(monthString);
}
sp_month = (Spinner) findViewById(R.id.sp_month);
sp_month.setAdapter(monthAdapter);
sp_month.setFocusable(true);
sp_month.setSelection(position);
sp_month.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView v1 = (TextView) view;
if (v1 != null)
v1.setTextColor(Color.BLACK); // 可以随意设置自己要的颜色值
} @Override
public void onNothingSelected(AdapterView<?> parent) { }
}); // 客户等级
ArrayAdapter<String> customerlevelAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
customerlevelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
String customerlevelString;
customerlevelAdapter.clear();
position = 0;
for (int i = 0; i < customerlevelList.length; i++) {
customerlevelString = customerlevelList[i];
customerlevelAdapter.add(customerlevelString);
}
sp_customerlevel = (Spinner) findViewById(R.id.sp_customerlevel);
sp_customerlevel.setAdapter(customerlevelAdapter);
sp_customerlevel.setFocusable(true);
sp_customerlevel.setSelection(position);
sp_customerlevel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView v1 = (TextView) view;
if (v1 != null)
v1.setTextColor(Color.BLACK); // 可以随意设置自己要的颜色值
} @Override
public void onNothingSelected(AdapterView<?> parent) { }
}); // 查询所有的客户资料
mCurrentData.clear();
mCurrentData = CustomerDBManager.getInstance().queryCustomerAll();
mAdapter = new SessionLocalAdapter(mCurrentData, CustomerMainActivity.this);
mListView = getListView();
mListView.setAdapter(mAdapter);
mListView.setFooterDividersEnabled(false); // 设成flase时,此ListView将不会在页脚视图前画分隔符。此属性缺省值为true。如果listview中没有添加页脚这个属性就不起作用。
mListView.setHeaderDividersEnabled(false); // 设成flase时,此ListView将不会在页眉视图前画分隔符。此属性缺省值为true。如果listview中没有添加页眉这个属性就不起作用。
mListView.setOnItemClickListener(this);
mListView.setOnItemLongClickListener(this);
如何在自己的Activity中去控制EditText的焦点的更多相关文章
- ListView中多个EditText设置焦点 多次点击异常报错
08-17 18:23:09.825: ERROR/AndroidRuntime(1608): FATAL EXCEPTION: main 08-17 18:23:09.825: ERROR/Andr ...
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- android开发之在activity中控制另一个activity的UI更新
转自:http://blog.csdn.net/jason0539/article/details/18075293 第一种方法: 遇到一个问题,需要在一个activity中控制另一个acitivit ...
- 【转】android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
来自:http://blog.csdn.net/jason0539/article/details/18055259 遇到一个问题,需要在一个activity中控制另一个acitivity做一些更新, ...
- Android Activity返回键控制的两种方式
Android Activity返回键监听的两种方式 1.覆写Activity的OnBackPressed方法 官方解释: Called when the activity has detected ...
- Android开发常见的Activity中内存泄漏及解决办法
上一篇文章楼主提到由Context引发的内存泄漏,在这一篇文章里,我们来谈谈Android开发中常见的Activity内存泄漏及解决办法.本文将会以“为什么”“怎么解决”的方式来介绍这几种内存泄漏. ...
- Activity中UI框架基本概念
Activity中UI框架基本概念 Activity 是应用程序的基本组成部分,提供了可视的界面,UI容器, 与用户进行交互: 具体Acitivity是怎么样显示这些事视图元素以及响应事件交互的. 一 ...
- 轻松了解Spring中的控制反转和依赖注入(二)
紧接上一篇文章<轻松了解Spring中的控制反转和依赖注入>讲解了SpringIOC和DI的基本概念,这篇文章我们模拟一下SpringIOC的工作机制,使我们更加深刻的理解其中的工作. 类 ...
- Android 管理Activity中的fragments
为了管理Activity中的fragments,需要使用FragmentManager,为了得到它,需要调用Activity中的getFragmentManager()方法,接下来详细介绍,感兴趣的朋 ...
随机推荐
- win7 ie10输入网址显示无法显示此页问题的解决
忽然又一天,非常奇怪,所有的浏览器都无法访问网页,直接输入IP也是不行. 本人试过各种方法,包括用360进行修复:清除%temp%下文件:看是否设错了dns, 升级和修复IE,重新注册ie相关的dll ...
- hadoop搭建杂记:Linux下虚拟机集群网络搭建
VirtualBox搭建hadoop伪分布式模式 VirtualBox搭建hadoop伪分布式模式 master: ip:192.168.56.120 机器名: master 启动NameNode 启 ...
- Composer Yii2 不设置全局变量 归档安装 Win7
1.下载Composer_installer.phar https://getcomposer.org/composer.phar 重命名为 composer_installer.phar 将文件放 ...
- fiddler--firefiox代理
修改端口:修改后重启才能生效
- 安装AppManager
http://www.searchvirtual.com.cn/showcontent_66884.htm
- Vim 实用技术,第 2 部分: 常用插件(转)
http://blog.jobbole.com/20619/ 2.1. gzip(压缩文件支持) 作者:Bram Moolenar 网站脚本编号:无(包含在 Vim 的标准发布之中) 安装说明:无 功 ...
- Spring 上下文
Spring 上下文WebApplicationContext.是服务器启动的时候加载ContextLoaderListener 的时候存在 ServletContext 中 servletConte ...
- [ACM] POJ 2253 Frogger (最短路径变形,每条通路中的最长边的最小值)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24879 Accepted: 8076 Descript ...
- CloudXNS首次使用体验
第一步:申请域名 对于从事IT行业的同学,有一个属于自己的域名是一件再正常只是的事情了. 没有,都不好意思说自己是搞机的.赶紧去新网.万网申请一个吧. 第二步:配置域名DNS 域名解析须要用到域名se ...
- 【转】CxImage图像库的使用
CxImage下载地址:http://www.codeproject.com/KB/graphics/cximage/cximage600_full.zip 作者:Davide Pizzolato C ...