Composto cliccabile disegnato in editext che si apre una vista sul clic
-
11-12-2019 - |
Domanda
Sto usando TextWatcher per convalidare il mio ingresso e voglio che venga giustificabile la mia immagine del suggerimento rosso in modo da poter dare al feedback visivo utente come mostrato nell'immagine sottostante.Quello che ho finora è il testo di modifica con l'immagine del suggerimento rosso che appare quando inserisco i dati non validi.Ora voglio sapere come rendere questo suggerimento rosso cliccabile e creare suggerimenti pop-up appaiono come mostrato.
Questo è il codice che ho finora,
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("");
}
}
. Soluzione
Devi creare un EditText
personalizzato per ottenere la prima caratteristica.
La vista popup su Facendo clic sul Disegnabile può essere eseguita con un PopupWindow
Altri suggerimenti
È molto semplice se si utilizza l'immagine del suggerimento rosso come composto stilizzabile a destra del tuo usernametxt di editext. Di seguito faranno il trucco.
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;
}
});
.
Se vuoi per il cambiamento designabile a sinistra l'istruzione se:
if(event.getRawX() <= username.getTotalPaddingLeft())
.
Allo stesso modo, puoi farlo per tutti i casi di composizione.
username.getTotalPaddingTop()
username.getTotalPaddingBottom()
.
Questo metodo Chiamata restituisce tutta l'imbottitura su quella parte compresi i casi.Puoi usarlo anche per testo, pulsante ecc.
Fare clic su qui per riferimento dal sito di Android Developer.