Crear enlace clicable en la vista de texto en Android

Tengo algunas tags hash en un TextView que comienzan con ‘#’

Ejemplo: “# uno # dos # Hello World #three”.

Quiero que estas tags hash se puedan hacer clic por separado y abrir una actividad y obtener este texto en esa actividad.

Entonces estos hash funcionan como un enlace y abren una actividad. Además, las tags no son fijas significa que puede ser cualquier texto. Cambia también el color de las tags hash al rojo y el color del rest de las tags será negro

Ejemplo: #one #two Hello World #three

Modifique el siguiente de acuerdo a su requerimiento. Use un SpannableString

 String s ="#one #Two Hello World #three"; String split[] = s.split("#"); TextView_tv = (TextView) findViewById( R.id.tv ); for(int i=1;i 

Snap on Emulator

En cada clic de hash, se muestran tostadas uno, dos y tres. En lugar de brindis, comienza una nueva actividad.

enter image description here

Editar:

Si quieres que se haga clic en la cadena

  ss1.setSpan(new MyClickableSpan(""+i,split[i]), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Entonces

  String clicked; String astring; public MyClickableSpan(String check,String actualstring) { super(); clicked =check; astring =actualstring; // pass this to next activity using intent } 

Entonces

  public void onClick(View tv) { if(clicked.equals("1")) { Toast.makeText(getApplicationContext(), astring,1000).show(); } else if(clicked.equals("2")) { Toast.makeText(getApplicationContext(), astring,1000).show(); } else { Toast.makeText(getApplicationContext(), astring,1000).show(); } } 

Puedes usar LinearLayout :

  • En xml agrega:

       

      

  • Diseño inicial:

     // EditText to write Tags. EditText tag = (EditText) findViewById(R.id.tag_ET)); // Button used to add tags Button addTagBtn = (Button) findViewById(R.id.add_Btn)); // layout contains added tags. final LinearLayout tagsView = (LinearLayout) findViewById(R.id.tags_view); 
  • Agregar tags a tagView:

      final String tagTxt = tagEt.getText().toString(); if (!tagTxt.isEmpty()) { Spannable buttonLabel = new SpannableString(tagTxt); // clear tag edit text tagEt.setText(""); // add tag to layout Button btn = new Button(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lout.addView(btn, tagsView); btn.setText(buttonLabel); btn.setBackgroundResource(R.drawable.hover); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Toast whatever you want. Toast.makeText(getApplicationContext(), tagTxt,1000).show(); } }); }