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

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

相信看到这个博客的你,一定很烦恼,因为我在写这篇博客之前也是,很多朋友的博客都是用这三个玩意(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叠起来,按照需求显示;

你可能感兴趣的:(Android开发)