web-dev-qa-db-fra.com

TextView cliquable sous Android

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.

12
Cris

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; 
  } 
}
19
xil3

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" />
12

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;
        }
    });
4
Iman Marashi

J'utilise un OnClickListener, essayez-le à la place de OnTouchListener. Voici le une description de leur utilisation .

4
Java_Waldi

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()
0
Android01