domenica 20 gennaio 2013

Hyperlink in un campo testo di una dialog con Android

In un campo testo è possibile inserire un hyperlink in diversi modi. Nell'esempio seguente vengono create due TextView in una Dialog box: nella prima il link è nella classe (volendo si può inserire nel file strings.xml e poi importarlo), nella seconda TextView il parametro 'autoLink' permette di riconoscere automaticamente un link per poi essere cliccato.

Codice java per il dialog:
final Dialog dialog = new Dialog(this);                                   
dialog.setContentView(R.layout.dialog);

String link1 = "<A HREF='http://www.example.com'>example</A>";
TextView txtLink1 = (TextView) dialog.findViewById(R.id.txt_dialog_link1);
txtLink1.setText(Html.fromHtml(link1));
txtLink1.setMovementMethod(LinkMovementMethod.getInstance());

dialog.show();
dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
 android:id="@+id/layout_root"          
 android:orientation="horizontal"  
 android:layout_width="fill_parent"  
 android:layout_height="fill_parent" >  
 <TableLayout android:layout_width="fill_parent"
  android:id="@+id/row_container1"
  android:background="@android:color/black"
  android:layout_height="fill_parent">
  <TableRow android:id="@+id/widget586"
      android:paddingBottom="8dp"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
   <TextView android:id="@+id/txt_dialog_link1"  
          android:layout_width="wrap_content" 
          android:textColor="@android:color/white"          
    android:layout_height="fill_parent"  />
  </TableRow>
  <TableRow android:id="@+id/widget587"
   android:layout_width="wrap_content"
   android:paddingBottom="8dp"
   android:layout_height="wrap_content">
   <TextView android:id="@+id/txt_dialog_link2"  
       android:textColor="@android:color/white"
       android:autoLink="web"
       android:text="http://www.example.com"
     android:layout_width="wrap_content"     
   android:layout_height="wrap_content"/>
  </TableRow>
  <TableRow android:id="@+id/widget587"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content">
   <Button 
    android:id="@+id/btn_dialog" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" 
    android:text="OK"/>
  </TableRow>
 </TableLayout>
</LinearLayout>