Java 在android中创建聊天活动 声明并创建textWatcher对象后,如果chatText(编辑文本)为空,我想禁用发送按钮并将其设置为灰色

Java 在android中创建聊天活动 声明并创建textWatcher对象后,如果chatText(编辑文本)为空,我想禁用发送按钮并将其设置为灰色,java,android,chat,onkeylistener,Java,Android,Chat,Onkeylistener,我认为这是一个排名问题。请帮忙 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chat); list = (ListView)findViewById(R.id.listView); list.setTranscriptMode(AbsListVi

我认为这是一个排名问题。请帮忙

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    list = (ListView)findViewById(R.id.listView);
    list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
    chatText = (EditText)findViewById(R.id.editText);
    //chatText.setOnKeyListener(this);

    me = true;
    send = (Button)findViewById(R.id.button);
    change = (Button)findViewById(R.id.button2);



    list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

    adp =  new TheAdapter(getApplicationContext(),R.layout.chat);

    list.setAdapter(adp);

    chatText.addTextChangedListener(textWatcher);
    checkFieldsForEmptyValues();


    send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            envoyer();
        }

    });

    change.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            me = !me;
            if (!me) {
                change.setText(R.string.sender2);
            } else {
                change.setText(R.string.sender);
            }
        }
    });
}





public void envoyer(){

    adp.add(new messages(me, chatText.getText().toString()));
    chatText.setText("");
}

private  void checkFieldsForEmptyValues(){

    String s1 = chatText.getText().toString();

    if (s1.length() < 0 ) {
        send.setEnabled(false);
    } else {
        send.setEnabled(true);
        send.setBackgroundColor(Color.BLUE);
        //send.setBackgroundColor((getResources().getColor(R.color.blue)));
    }

}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u chat);
list=(ListView)findViewById(R.id.ListView);
list.setTranscriptMode(AbsListView.TRANSCRIPT\u MODE\u ALWAYS\u SCROLL);
chatText=(EditText)findViewById(R.id.EditText);
//chatText.setOnKeyListener(这个);
我是真的;
send=(按钮)findviewbyd(R.id.Button);
更改=(按钮)findViewById(R.id.button2);
list.setTranscriptMode(AbsListView.TRANSCRIPT\u MODE\u ALWAYS\u SCROLL);
adp=新的TheAdapter(getApplicationContext(),R.layout.chat);
列表.设置适配器(adp);
addTextChangedListener(textWatcher);
checkFieldsForEmptyValues();
send.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
特使();
}
});
change.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
我=!我;
如果(!我){
change.setText(R.string.sender2);
}否则{
change.setText(R.string.sender);
}
}
});
}
公使(){
adp.add(新消息(me,chatText.getText().toString());
chatText.setText(“”);
}
私有void checkFieldsForEmptyValues(){
字符串s1=chatText.getText().toString();
if(s1.length()<0){
send.setEnabled(false);
}否则{
send.setEnabled(true);
send.setBackgroundColor(Color.BLUE);
//send.setBackgroundColor((getResources().getColor(R.color.blue));
}
}

onTextChanged
中,您可以检查文本字段是否为空:

chatText.addTextChangedListener(new TextWatcher() {
@Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (s.length() > 0) { //enable}
            else if (s.length() == 0 { //disable }
在您的代码中,有
if(s1.length()<0)
,我认为这永远不会是真的,因为文本大小永远不会小于0

// Disable on init
    send.setEnabled(false);

    // add text changer
    chatText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // Enable when input is != null and not empty. You can check string lenght too
            send.setEnabled(s != null && !s.toString().isEmpty());
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
禁用之前的按钮并添加textwatch。您还可以检查edittext值是否为空或验证字符串长度


我希望它能帮助您正确格式化代码。并详细说明你的问题