文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android基础教程之android的listview与edittext冲突解决方法

2022-06-06 10:25

关注

最近遇到一个关于android软键盘的问题。在ListView中每个Item中都有个EditText,在最后的几个Item中,EditText第一次点击界面还能向上弹出,正常显示,

但第二次点击时,软件盘就把最后的几个Item给正当住了。这样很影响用户体验的。

其实解决的办法只要想一下,我相信有经验的开发人员就能够想到,让软键盘在消失的时候让相应Item中的EditText消失焦点clearFouce();但是有个关键的问题,

就是在获得返回事件的时候,如果获得的事件不对那就不会达到想要的效果。这个back时间一定要是自定Layout中的back事件才可以。

直接上代码。

代码如下:
<cn.test.systemSetting.MyLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboardlayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/main_bg"
    android:orientation="vertical" >
    <ListView
                android:id="@+id/lv_data"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:cacheColorHint="#00000000"
                android:transcriptMode="normal"
                >
     </ListView>
</cn.test.systemSetting.MyLayout>

自定义layout中所作的处理:
代码如下:
package cn.test.systemSetting;

import com.********.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;

public class MyLayout extends LinearLayout {
    private Context context;
    public MyLayout(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        this.context=context;
        LayoutInflater.from(context).inflate(R.layout.device_manager, this);//此处所加载的layout就是上面的xml,即它的名字就是device_manager.xml
    }
    public MyLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }
   
    public MyLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
    @Override
    public boolean dispatchKeyEventPreIme(KeyEvent event) {
        // TODO Auto-generated method stub
        if(context!=null){
            InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
            if(imm.isActive() && event.getKeyCode() == KeyEvent.KEYCODE_BACK){
                View view = DeviceManagerActivity.lv_data.getFocusedChild();
                if(view!=null){
                    view.clearFocus();
                }
            }
        }
        return super.dispatchKeyEventPreIme(event);
    }
}

主界面所采用的加载方式要是这样的:
代码如下:
public class DeviceManagerActivity extends Activity implements OnClickListener{
    public static ListView lv_data;
    static DevMgrAdapter adapter;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 1.全屏
        requestWindowFeature(Window.FEATURE_NO_TITLE); // 无
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        this.setContentView(new MyLayout(this));
        init();
    }
}

您可能感兴趣的文章:Android取消EditText自动获取焦点默认行为Android控件系列之EditText使用方法android同时控制EditText输入字符个数和禁止特殊字符输入的方法Android中EditText实现不可编辑解决办法Android定制自己的EditText轻松改变底线颜色Android编程设置TextView颜色setTextColor用法实例Android更改EditText下划线颜色样式的方法Android 设置Edittext获取焦点并弹出软键盘全面解析Android中对EditText输入实现监听的方法Android中EditText setText方法的踩坑实战


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯