Skip to main content

Spannable String in Android - URL Span ,Clickable Span, Rich-Style Formatting of Textview .....

See more Android Tutorials here.......

Faster Loading images in GridViews or ListViews

Spannable brings lots of possibility to TextView, includes displaying various appearance of a Text and onClick callbak.
The SpannableString class allows you to easily format certain pieces which are called spans of a string, by applying CharacterStyle ie,color, font, ormake it a link .
Here is an example where, explained how to use spannable string to give font size, color, linking a text via clickable span and through URL Span and to strike through the text.
Lets go through the example :
import android.os.Bundle;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.TextView.BufferType;
import android.app.Activity;                        
import android.graphics.Color;  
 
public class Spannable_String extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_spannable__string);
  
  TextView spannabletextview = (TextView)findViewById(R.id.usage);
  
     //********* Simple Span to color text ************// 
  // this is the text that we going to work on
     SpannableString text = new SpannableString("Iam an example for spannable string ");
     // make "Iam" (characters 0 to 3) green
     text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 3, 0);
     // Put the SpannableString in textview
     
     //**** Relative Span to change text relative to others  ****//
     //changing the text from 5 to 9 1.5f bigger than textview size  
  text.setSpan(new RelativeSizeSpan(1.5f), 5, 9, 0);
  
  //************ Clickable Span **************//
  // going to make "for" a clickable text and bring a toast
  ClickableSpan clickfor = new ClickableSpan() {
   
   @Override
   public void onClick(View widget) {
             Toast.makeText(Spannable_String.this, "hello clicked for", Toast.LENGTH_LONG).show();    
   }
  };
  text.setSpan(clickfor, 15, 18, 0);
  
  //******** Strike through text***********//
     text.setSpan(new StrikethroughSpan(), 9, 14, 0);
     //******** URL Span *********************//
     text.setSpan(new URLSpan("http://eazyprogramming.blogspot.in/"), 22, 26, 0);
     //******** ForegroundColor *********************//
     text.setSpan(new ForegroundColorSpan(Color.GREEN), 22, 26, 0);
     // make our ClickableSpans and URLSpans work
     spannabletextview.setMovementMethod(LinkMovementMethod.getInstance());
  
     spannabletextview.setText(text, BufferType.SPANNABLE);  
 }

}

Comments

  1. how to remove link underline in above example?

    ReplyDelete

Post a Comment

Popular posts from this blog

Passing Images between Activities in Android

in First Activity:
Intent intent=new Intent(FirstClass.this, SecondClass.class); Bundle bundle=new Bundle(); bundle.putInt("image",R.drawable.ic_launcher); intent.putExtras(bundle); startActivity(intent); in Second Acticity:
Bundle bundle=this.getIntent().getExtras(); int pic=bundle.getInt("image"); v.setImageResource(pic);another method:
in First Activity:
Drawable drawable=imgv.getDrawable(); Bitmap bitmap= ((BitmapDrawable)drawable).getBitmap(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] b = baos.toByteArray(); Intent intent=new Intent(Passimage.this,myclass.class); intent.putExtra("picture", b); startActivity(intent); in Second Acticity:
Bundle extras = getIntent().getExtras(); byte[] b = extras.getByteArray("picture"); Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); Image…

Get a single record from SQLite in ANDROID

For COMPLETE TUTORIALS see here :
in DATABASE HELPER class: String[] coloumns = new String[] { KEY_ROWID, KEY_NAME, KEY_NICKNAME }; // calling elements in an array Cursor c = db.query(DATABASE_TABLE, coloumns, KEY_ROWID + "=" + l,null, null, null, null); if (c != null) { c.moveToFirst(); String name = c.getString(1); // since name is in position 1 ie second coloumn return name; } return null; in sqlite.java : String s =editinfo.getText().toString(); long l=Long.parseLong(s); DBAdapter adapter=new DBAdapter(SQliteExample.this); adapter.open(); String returnedname=adapter.returnName(l); String returnednickname=adapter.returnickname(l); adapter.close(); editName.setText(returnedname); editNickName.setText(returnednickname);

How To Finish All Previous Activities in ANDROID ?

Some times we may need to close previous all activities before calling an intent, so that the previous activity do not loads on clicking the Android back button.Here is a simple sniffet for it.. Intent intent = new Intent(getApplicationContext(), MainClass.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);