Je construis une application Android qui contient de nombreuses TextViews sur lesquelles je veux être cliquable. J'ai essayé d'attribuer les propriétés Android:clickable="true"
et Android:onClick="clickHandler"
à la seule TextView
et lorsque l'application déclenche la clickHandler(View v)
, je reçois le clic. élément correctement à travers v.getId()
. Ce que je n'aime pas, c’est de définir, pour chaque TextView
, les propriétés Android:clickable
et Android:onClick
... y at-il quelque chose que je puisse faire en indiquant: "toutes les vues textuelles sont cliquables et click est manipulé dans clickHandler
? "
Merci.
Vous pouvez faire quelque chose comme ceci ci-dessous - de cette façon ils ont tous le même gestionnaire
public class sticks extends Activity implements View.OnTouchListener {
private TextView tv1;
private TextView tv2;
private TextView tv3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
tv3 = (TextView) findViewById(R.id.tv3);
// bind listeners
tv1.setOnTouchListener(this);
tv2.setOnTouchListener(this);
tv3.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// check which textview it is and do what you need to do
// return true if you don't want it handled by any other touch/click events after this
return true;
}
}
J'ai utilisé ceci:
<TextView
Android:id="@+id/txtTermsConditions"
Android:layout_width="180dp"
Android:layout_height="50dp"
Android:layout_marginLeft="20dp"
Android:layout_marginTop="10dp"
Android:onClick="onTermConditions"
Android:clickable="true"
Android:focusable="true"
Android:text="Terms and Conditions"
Android:textColor="@color/blue" />
Bonjour, vous devez utiliser les deux codes ci-dessous:
<TextView
Android:id="@+id/reg_text"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/login_btn"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="10dp"
Android:clickable="true"
Android:text="Are you now need to create an account?"
Android:textColor="#ff0000ff"
Android:textSize="15sp"
/>
Et
private TextView tv1;
tv1= (TextView)findViewById(R.id.reg_text);
tv1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
ProgressDialog progressBar = ProgressDialog.show(MainActivity.this, "Title",
"شکیبا باشید!");
progressBar.setCancelable(true);
Intent i = new Intent(getApplicationContext(), Register.class);
startActivity(i);
return false;
}
});
J'utilise un OnClickListener, essayez-le à la place de OnTouchListener. Voici le une description de leur utilisation .
Le code ci-dessous a fonctionné pour moi:
ajouter à strings.xml:
<string name="about_us"><font fgcolor="#039BE5">\"THIS IS SPARTA! more info at" <font fgcolor="#000000"><a href="https://google.com/">google.com</a></font>
</string>
ajouter à TextView:
Android:linksClickable="true"
ajouter à l'activité:
about_us.movementMethod = LinkMovementMethod.getInstance()