2012-07-26 11 views
5

Girişimi doğrulamak için TextWatcher kullanıyorum ve kırmızı ipucu görüntüümün tıklanabilir olmasını istiyorum, böylece kullanıcı görsel geri bildirimi aşağıdaki resimde gösterildiği gibi verebilirim. Şimdiye kadar sahip olduğum şey, geçersiz veri girdiğimde görünen kırmızı ipucu görüntüsüyle düzenleme metnidir. Şimdi bu kırmızı ipucu tıklatılabilir hale getirmek ve pop-up ipucu gösterildiği gibi görünmesini sağlamak istiyorum bilmek istiyorum. EditText'te tıklanabilir bir görünüm olan tıklatılabilir EditText'te tıklatıldığında tıklatın

EditText hint

Bu

, İlk özelliğini elde etmek için özel bir EditText yapmak zorunda

public class MainActivity extends Activity implements TextWatcher{ 

    EditText username,email = null; 
    boolean flag=false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main);  

     username=(EditText) findViewById(R.id.usernametxt); 
     email=(EditText) findViewById(R.id.emailtxt); 

     username.addTextChangedListener(this); 

     username.setOnTouchListener(new View.OnTouchListener(){ 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      // your code here... 
      if(flag) 
      { 
       email.setText("Error. . ."); 
      } 
      getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);     
      return false; 
      } 
     }); 

     Button loginbtn = (Button) findViewById(R.id.login); 
     loginbtn.setOnClickListener(new Button.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       //Check Validations 
       if(username.getText().toString().equalsIgnoreCase("")) 
       { 
        username.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.alert, 0); 
        flag=true; 
       } 
      } 
     }); 

     Button clearbtn = (Button) findViewById(R.id.clear); 
     clearbtn.setOnClickListener(new Button.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       username.setText(""); 
       email.setText("");  
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    public void afterTextChanged(Editable arg0) { 
     // TODO Auto-generated method stub 

    } 

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

    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // TODO Auto-generated method stub  
     username.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); 
     flag=false; 
     email.setText(""); 
    } 
} 
+1

sorun nedir? – Akram

+0

@Akki Görüntülenmek istediğim şey. Şimdi kırmızı görüntü sadece kullanıcı geçersiz veri girdiğinde var. Kullanıcı kırmızı görüntü ipucunu tıkladığında görüntüdeki gösterilen pop-up'ın görünmesini istiyorum. –

+0

Hala şu an sorunu anladığımdan eminim. –

cevap

5

var bugüne kadar koddur.

Solved here

çekilebilir tıklayarak üzerinde açılan görünümü PopupWindow

Solved here.

+0

Popupwindow tam da ihtiyacım olan şey. Teşekkür ederim. –

3

ile yapılabilir Onun çok basit sen sağına bir bileşik çekilebilir kırmızı ipucu resim kullanıyorsanız senin EditText usernametxt. Aşağıdaki hile yapacaktır.

EditText username = (EditText) findViewById(R.id.usernametxt); 
username.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_UP) { 
      if(event.getRawX() >= username.getRight() - username.getTotalPaddingRight()) { 
       // your action for drawable click event 

      return true; 
      } 
     } 
     return true; 
    } 
}); 

sol çekilebilir değişim için eğer deyimi isterseniz: Benzer

if(event.getRawX() <= username.getTotalPaddingLeft()) 

, tüm bileşik drawables için yapabilir.

username.getTotalPaddingTop() 
username.getTotalPaddingBottom() 

Bu yöntem çağrısı, herhangi bir çizim de dahil olmak üzere o taraftaki tüm dolguları döndürür. Bunu, TextView, Button vb. Için bile kullanabilirsiniz.

Android geliştirici sitesinden referans için here'u tıklatın.