EidtText可编辑不可点击和可点击不可编辑终极版。

来源:互联网 发布:如何成为淘宝促销员 编辑:程序博客网 时间:2024/06/06 19:20

前言:管他黑猫白猫,抓到老鼠就是好猫,你觉得老板会理你有没有用老鼠笼?

相信看到这个博客的你,一定很烦恼,因为我在写这篇博客之前也是,很多朋友的博客都是用这三个玩意(clickable,focusable,enabled)来这实现这个功能,但是我用了他们的代码后发现“妈的,这是什么鬼?”怎么试都是扯淡,所以我最后曲线救国,想了这个方法,保证可以。

首先我说说需求,某个界面既是新增又是修改界面,当新增的时候EditText就是正常的EditText;当时修改界面的时候,点击EdiText就跳转到另一个界面进行修改,就像那种搜索框,现在的搜索框点击后一般都是跳转到令一个界面去修改,反正这时候EditText就充当一个Button来用

//true代表是修改界面private boolean isEdit = false;mEditProjectName.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //只有修改界面的时候触发。                if(isEdit){                    Intent intent = new Intent();                    intent.setClass(A.this, B.class);                    intent.putExtra("strContent", mEditProjectName.getText().toString());                    intent.putExtra("strTitle", mContext.getString(R.string.modify_project_name));                    startActivityForResult(intent, ConstantData.REQUEST_NOTE_TITLE);                }            }});if(isEdit){    //可用可点击不可获取焦点    mEditProjectName.setEnabled(true);    mEditProjectName.setClickable(true);    mEditProjectName.setFocusable(false);}else{    //啥也不用管,EditText本来是什么样就什么样,上面的点击事件他进不去的。}

另外,这个方法我说是曲线救国,其实是没有错的,因为EditText继承自TextView,而在我们使用的过程中可以体现出来的差别就是EditText是否可以编辑,而下面这三行代码就是把这个属性干掉了,所以此时此刻它就是就是一个TextView。

    //丛我们可见的程度上来说设置了这三个属性EditText就变成了TextView    mEditProjectName.setEnabled(true);    mEditProjectName.setClickable(true);    mEditProjectName.setFocusable(false);

所以,面对我上面同样的需求,一个TextView怎么处理此时的EditText就怎么处理,这样是不是可以很好的理解了。


当然,如果你这个方法也不想用,还有一个方法。用两个控件,用一个FrameLayout布局将一个EditText一个TextView叠起来,按照需求显示;

0 0
原创粉丝点击