Android SpannableString ve ClickableSpan Kullanımı

Android SpannableString ve ClickableSpan Kullanımı

Merhaba Arkadaşlar,
Android ve ios uygulama geliştirme dersleri anlattığımız mobilhanem.com sitemiz üzerinden bu dersimizde, Android SpannableString ve ClickableSpan kullanımını anlatmaya çalışacağız ve Android Ders yayınlamaya ara vermeden devam edeceğiz
.
Android uygulama geliştirirken olmazsa olmazlardan biri Textview ve String kullanımıdır.Daha önce uygulama geliştiren arkadaşlar bilirler, Textview bir string’i uygulamada kullanıcıya göstermek için kullanılır ve en temel android bileşenidir diyebiliriz.

Biz bu dersimizde Android Textview kullanımını anlatmayacağız. Zaten bu dersimizi inceliyorsanız Textview kullanımını çok iyi biliyorsunuz demektir. Peki nedir bu SpannableString ve ClickableSpan ve nerede kullanılır.

SpannableString’i şöyle açıklayabilirim. Bir string’niz var ve bu stringin belli bir kısmını altı çizili, bold, italic, farklı renkte,background’nı farklı renkte vs. yapmak istiyorsunuz. Bunu farklı farklı stringlere bölüp farklı farklı textviewlere koyarak yapabilirsiniz. Ama bu yol hem fazla zahmetli hemde iyi bir yöntem değil. İşte burada yardımımıza SpannableString yetişiyor. SpannableString ile istediğimiz karakterden başlayıp istediğimiz karektere kadar stringimizi şekillendirebiliyoruz.

SpannableString – ClickableSpan

Bunu nasıl yapıyoruz aşağıdaki kod ile anlatmaya çalıştım.

String st = “Taha Kırca Mobilhanem.com sitesi kurucu yazarı. iOS ve Android developer. Ayrıca kişisel blog sitesi tahakirca.com ‘dur.”;

SpannableString ss = new SpannableString(st);
ss.setSpan(new StyleSpan(Typeface.BOLD), 11,25, 0);

String st = “Taha Kırca Mobilhanem.com sitesi kurucu yazarı. iOS ve Android developer. Ayrıca kişisel blog sitesi tahakirca.com ‘dur.”;

 

SpannableString ss = new SpannableString(st);

ss.setSpan(new StyleSpan(Typeface.BOLD), 11,25, 0);

Yukarıdaki kodda elimizdeki stringin 11. karakteri ile 25. karakteri arasındaki yani “mobilhanem.com” kısmını bold yaptık.

Peki sadece bold mu yapabiliyoruz.Hayır yapabildiğimiz bir kaç style aşağıdaki gibi listeleyebiliriz.

ss.setSpan(new StrikethroughSpan(), 11,25, 0);//üzeri çizgili

ss.setSpan(new StyleSpan(Typeface.BOLD), 11,25, 0); //BOLD

ss.setSpan(new UnderlineSpan(), 13, 23, 0);//Altı çizili

ss.setSpan(new StyleSpan(Typeface.ITALIC), 25, 31, 0);//italic

ss.setSpan(new ForegroundColorSpan(Color.GREEN), 48, 55, 0); //text rengi

ss.setSpan(new BackgroundColorSpan(Color.CYAN), 57, 68, 0); //backgroud rengi

ss.setSpan(new SuperscriptSpan(), 72, 83, 0); //Bir tık yukarı alır

ss.setSpan(new SubscriptSpan(), 87, 96, 0);//Bir tık aşağı alır

ss.setSpan(new RelativeSizeSpan(2f), 0, 5, 0); //Yazıyı büyütür

ss.setSpan(new URLSpan(“http://www.mobilhanem.com”), 98, 101, 0); //Webview için tıklanabilir

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

ss.setSpan(new StrikethroughSpan(), 11,25, 0);//üzeri çizgili

 

ss.setSpan(new StyleSpan(Typeface.BOLD), 11,25, 0); //BOLD

 

ss.setSpan(new UnderlineSpan(), 13, 23, 0);//Altı çizili

 

ss.setSpan(new StyleSpan(Typeface.ITALIC), 25, 31, 0);//italic

 

ss.setSpan(new ForegroundColorSpan(Color.GREEN), 48, 55, 0); //text rengi

      

ss.setSpan(new BackgroundColorSpan(Color.CYAN), 57, 68, 0); //backgroud rengi

 

ss.setSpan(new SuperscriptSpan(), 72, 83, 0); //Bir tık yukarı alır

      

ss.setSpan(new SubscriptSpan(), 87, 96, 0);//Bir tık aşağı alır

 

ss.setSpan(new RelativeSizeSpan(2f), 0, 5, 0); //Yazıyı büyütür

 

ss.setSpan(new URLSpan(“http://www.mobilhanem.com”), 98, 101, 0); //Webview için tıklanabilir

Evet yukarda birkaç kullanımından bahsettim. Çok daha fazla kullanımı mevcuttur. Sizlerde araştırarak bulabilirsiniz.

Peki stringimize istediğimiz biçimi verdik ama tıklanabilirlik özelliğini eklemedik. Stringimize tıklanabilirlik özelliği verebilmemiz için ClickableSpan kullanıyoruz. Stringimizin istediğimiz bir kısmına tıklanınca bir methodu tetikleyebiliriz.Aşağıdaki kodda bunu anlatmaya çalıştım.

String st = “Taha Kırca Mobilhanem.com sitesi kurucu yazarı. iOS ve Android developer. Ayrıca kişisel blog sitesi tahakirca.com ‘dur.”;
SpannableString ss = new SpannableString(st);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Toast.makeText(getApplicationContext(), “Tıklandı”, Toast.LENGTH_LONG).show();
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(true);
}
};
ss.setSpan(clickableSpan, 101,115, 0);

String st = “Taha Kırca Mobilhanem.com sitesi kurucu yazarı. iOS ve Android developer. Ayrıca kişisel blog sitesi tahakirca.com ‘dur.”;

SpannableString ss = new SpannableString(st);

ClickableSpan clickableSpan = new ClickableSpan() {

      @Override

      public void onClick(View textView) {

          Toast.makeText(getApplicationContext(), “Tıklandı”, Toast.LENGTH_LONG).show();

      }

      @Override

      public void updateDrawState(TextPaint ds) {

      super.updateDrawState(ds);

          ds.setUnderlineText(true);

      }

};

ss.setSpan(clickableSpan, 101,115, 0);

Evet arkadaşlar bugünkü android ders‘imizde sizlere SpannableString ve ClickableSpan’ı anlatmaya çalıştık. Mobil uygulama geliştirme konusunda sizlere yardımcı olmaya çalışıyor ve çalışacağız. Umarım faydalı oluyordur.Bir sonraki dersimde görüşmek dileğiyle.

Kaynak : http://www.programcreek.com/java-api-examples/android.text.SpannableString

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

0

Yorum Yap
0 Yorum yapan