2014-02-24 27 views
7

Ich habe eine Textview wie wie folgt aus:Wie wird ein Mehrfachklick-Ereignis für die einzelne Textansicht festgelegt?

txtByRegistering.setText("By Registering you agree to terms and condition and privacy policy"); 

Es ist nur ein großer Text. Also habe ich mit dem Lauftext den Text horizontal geblättert. das funktioniert gut. Meine Frage ist, wie das Click-Ereignis beim Klicken auf den ausgewählten Lauftext aufgerufen wird.

Say für die Ex:

  1. , wenn der Benutzer das Wort klicken "Registrieren" in der obigen Textview, muss ich die neue Intent aufzurufen.
  2. Wenn der Benutzer klicken Sie auf das Wort "Terms", ich haben wieder eine neue Intent aufrufen (eine Tätigkeit mit webview als Bedingungen URL Link hat).

Wie das Wort „Registrieren“ und „Bedingungen“ sind Web-URLs, habe ich versucht, so etwas wie unten:

String mRegDesc = "By registering you agree to the " + "<a href=\"" 
      + Constant.URL + "/terms_and_conditions" 
      + "\">Terms of Use</a> " + "and " + "<a href=\"" + Constant.URL 
      + "/privacy" + "\">Privacy Policy</a> "; 

    txtByRegistering.setText(Html.fromHtml(mRegDesc)); 
    txtByRegistering.setMovementMethod(LinkMovementMethod.getInstance()); 
    txtByRegistering.setSelected(true); 
    txtByRegistering.setTypeface(mTyFaceOverLockReg, Typeface.BOLD); 

Der obige Code funktioniert gut und es bringt mich an den Browser, wenn ich das Wort klicken "AGB" Aber ich möchte zu neuen Aktivitäten gehen.

hoffe ihr könnt mir helfen! Dank,

+0

ich denke, Sie brauchen 'ClickableSpan', sehen Sie meine Antwort auf http://StackOverflow.com/Questions/20988905/Long-press-on-Selected-Text-in-Textview-in-Android/20988922#20988922 –

+0

@ Shayanpourvatan Kann ich mehrere 'ClickableSpan' für einen einzelnen' SpannableString' setzen? Würdest du bitte ausführlicher? Und unterstützt SpannableString die API-Ebene 8? –

+0

Ja, Sie können mehrere Clickabale für eine Zeichenfolge festlegen, und diese Methode wurde für weitere Informationen auf API-Ebene 1 hinzugefügt. Weitere Informationen finden Sie unter http://developer.android.com/reference/android/text/style/ClickableSpan.html und http: // stackoverflow .com/questions/9982241/android-clickable-textview-how-to-machen-multiple-click-regions-on-text-and-catch –

Antwort

7

Schließlich

ich die Lösung für das gefunden,

Hier ist die Lösung:

SpannableString SpanString = new SpannableString(
      "By Registering you agree to the Terms of Use and Privacy Policy"); 

    ClickableSpan teremsAndCondition = new ClickableSpan() { 
     @Override 
     public void onClick(View textView) { 

      Utils.displayToast("Clickable span terms and codition", 
        SignUp.this); 

      Intent mIntent = new Intent(SignUp.this, CommonWebView.class); 
      mIntent.putExtra("isTermsAndCondition", true); 
      startActivity(mIntent); 

     } 
    }; 

    ClickableSpan privacy = new ClickableSpan() { 
     @Override 
     public void onClick(View textView) { 

      Utils.displayToast("Clickable span terms and codition", 
        SignUp.this); 

      Intent mIntent = new Intent(SignUp.this, CommonWebView.class); 
      mIntent.putExtra("isPrivacyPolicy", true); 
      startActivity(mIntent); 

     } 
    }; 

    SpanString.setSpan(teremsAndCondition, 32, 45, 0); 
    SpanString.setSpan(privacy, 49, 63, 0); 
    SpanString.setSpan(new ForegroundColorSpan(Color.BLUE), 32, 45, 0); 
    SpanString.setSpan(new ForegroundColorSpan(Color.BLUE), 49, 63, 0); 
    SpanString.setSpan(new UnderlineSpan(), 32, 45, 0); 
    SpanString.setSpan(new UnderlineSpan(), 49, 63, 0); 

    txtByRegistering.setMovementMethod(LinkMovementMethod.getInstance()); 
    txtByRegistering.setText(SpanString, BufferType.SPANNABLE); 
    txtByRegistering.setSelected(true); 

dank Shayan pourvatan.

+0

jede Idee, wie Unterstreichung Farbe ändern –

Verwandte Themen