2015-01-16 5 views
0

8 개의 EditText가 있습니다.값을 설정할 때 EditText의 색을 변경하십시오.

사용자가 일부 EditText에 값을 입력하면 빈 EditText가 일부 계산으로 채워집니다.

나는 다음과 같이 글고의 색상을 변경하는 코드를 작성 : IHE 시나리오는

    if (ng1 == 0) { 
           if (Goal >= 0 && Goal <=10) 
            eg1.setText(Float.toString(Goal)); 
           eg1.setTextColor(Color.BLUE); 

          } 

          if (ng2 == 0) { 
           if (Goal >= 0 && Goal <=10) 
            eg2.setText(Float.toString(Goal)); 
           eg2.setTextColor(Color.BLUE); 
          } 

          if (ng3 == 0) { 
           if (Goal >= 0 && Goal <=10) 
            //eg3.setText(""); 
            eg3.setText(Float.toString(Goal)); 
           eg3.setTextColor(Color.BLUE); 
          } 

수단은, 사용자가 2 값, 3, 그가 원하는 무엇도 4와 글고 치기의 나머지 부분을 넣을 수 있습니다 것입니다 일부 계산을 기준으로 채워지고 채워진 사용자에게 내가 파란색으로 바꿀 필요가 있는지 보여 주며 사용자가 편집 문구를 편집하면 색상이 파란색으로 표시되지만 검정색을 원합니다.

뭐니?

답변

1

사용자가 editText를 클릭하면 색상이 검정으로 변할 때 onTouchListner를 사용하려고합니다.

0

텍스트 변경 리스너를 사용해야합니다.

_edtText.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       // TODO Auto-generated method stub 
       _edtText.setTextColor(Color.BLACK); // you can set color onTextChanged 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 


      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub 

      } 
     }); 
+0

비록 내 작품이지만, OP의 코드에서 무엇이 잘못되었고 무엇이 바뀌 었는지에 대한 간략한 설명을하는 것이 좋습니다. – shkschneider

+1

코드에서 편집 텍스트 색상이 항상 파란색으로 설정된 경우를 제외하고는 관리하지 않습니다. –

+0

사용자가 텍스트 상자에 다시 내용을 입력 할 때 OP는 텍스트의 색을 '검정색'으로 변경하려고합니다. –

1

같은 방법으로 처리됩니다 EditText 컨트롤을 많이 가지고 있기 때문에, 나는 변화를 텍스트와 3, 8, 헤아릴 수에 대해 동일한 작업을 중복되지 않도록하기 위해 듣고 TextWatcher (documentation) 사용하는 것이 좋습니다 것 통제 수단.

아래 예제는 컴파일되지 않으며 메모리의 간단한 텍스트 편집기로 작성되었으므로 컴파일을 변경해야 할 수 있습니다. 그러나, 그것은

먼저 정확한 방향을 가리 키도록 만 템플릿, 당신은 당신이 textChange 리스너를 추가 onCreate()

private class MyTextWatcher implements TextWatcher { 

    private EditText mEditText; 

    public MyTextWatcher(EditText view) { 
     mEditText = view; 
    } 

    public void afterTextChanged (Editable s) {} 

    public void beforeTextChanged (CharSequence s, int start, int count, int after) {} 

    public void onTextChanged (CharSequence s, int start, int before, int count) { 
     //Check if has user focus. if it has, then user is typing smth. set appropriate color 
     mEditText.setTextColor(mEditText.hasFocus() ? Color.BLACK : Color.BLUE); 
    } 
}; 

그런 다음 같은 TextWatcher 핸들을 모든 EditText의이하기 위해 사용자 정의 TextWatcher 구현을 만들 : 난 그냥 모든 텍스트를 편집에 ontouch 리스너를 추가 했는가

eg1 = (EditText)findViewById(R.id.your_eg1_id); 
eg1.addTextChangedListener(new MyTextWatcher(eg1)); 
eg2 = (EditText)findViewById(R.id.your_eg2_id); 
eg2.addTextChangedListener(new MyTextWatcher(eg2)); 
... 
egN = (EditText)findViewById(R.id.your_egN_id); 
egN.addTextChangedListener(new MyTextWatcher(eg3)); 
0

eg1.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg1.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg2.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg2.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg3.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg3.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg4.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg4.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg5.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg5.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg6.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg6.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg7.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg7.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 

     eg8.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       eg8.setTextColor(Color.BLACK); 
       return false; 
      } 
     }); 
+0

누구에게 이렇게 적어 주 셨나요? 저에게 더 좋은 방법을 말해 줄 수 있습니까 ..... –

관련 문제