2016-05-20 3 views
-1
  1. После объявления и создания textWatcher объекта, я хотел бы, чтобы отключить кнопку отправки и установите его в серый цвет, если chatText (редактирование текста) пусто
  2. Я думаю, что это проблема рейтинга. Пожалуйста помоги.создание активности чата в андроида

    @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))); 
        } 
    
    } 
    
+1

Отформатируйте свой код правильно. И укажите свой вопрос – Ilya

ответ

0

В 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.

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) { 

     } 
    }); 

отключить кнопку до и добавить tex twatch. Вы также можете проверить, не является ли значение edittext пустым или проверить длину строки.

Я надеюсь, что это вам поможет

+0

Это очень спасибо работе :) – Constantine