2012-05-22 22 views
12

estoy mostrando una lista de cadenas en una AlertDialog como se muestra a continuación:Android: fuente de ancho fijo en AlertDialog

enter image description here

1.How puedo configurar una fuente de ancho fijo como el que se muestra a continuación

enter image description here

2.El AlertDialog tiene desplazamiento vertical habilitado por defecto. ¿Cómo puedo habilitar el desplazamiento horizontal para que la última línea permanezca en la línea anterior?

Respuesta

16

Infla tu propia vista para AlertDialog y establece android: typeface = "monoespacio" en esa vista. Para lograr esto:

enter image description here

usar la disposición:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/dlgView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:id="@+id/dlgLayout" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="5dp"> 
    <TextView android:id="@+id/dlgText" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:textColor="#FFF" 
     android:typeface="monospace"/> 
    </LinearLayout> 
</ScrollView> 

Este código para la actividad construye un AlertDialog (soltar un botón en el diseño predeterminado).

public class MonospacedAlertActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     //attach an instance of HandleClick to the Button 
     findViewById(R.id.button1).setOnClickListener(new HandleClick()); 
    } 
    private class HandleClick implements OnClickListener{ 
     public void onClick(View arg0) { 
      ShowAlert(MonospacedAlertActivity.this); 
     } 

     private void ShowAlert(Activity callingActivity) { 
      //Generate views to pass to AlertDialog.Builder and to set the text 
      View dlg; 
      TextView tvText; 
      try { 
       //Inflate the custom view 
       LayoutInflater inflater = callingActivity.getLayoutInflater(); 
       dlg = inflater.inflate(R.layout.alertmono, (ViewGroup) callingActivity.findViewById(R.id.dlgView)); 
       tvText = (TextView) dlg.findViewById(R.id.dlgText); 
      } catch(InflateException e) { 
       //Inflater can throw exception, unlikely but default to TextView if it occurs 
       dlg = tvText = new TextView(callingActivity); 
      } 
      //Set the text 
      tvText.setText("22-05-2012 20:51:13 114 58 00:04:19\n"+ 
          "22-05-2012 20:59:15 84 52 00:01:25\n"+ 
          "22-05-2012 22:49:48 96 51 00:01:32\n"+ 
          "23-05-2012 00:08:52 79 58 00:01:26"); 
      //Build and show the dialog 
      new AlertDialog.Builder(callingActivity) 
       .setTitle(callingActivity.getString(R.string.app_name)) 
       .setCancelable(true) 
       .setIcon(R.drawable.ic_launcher) 
       .setPositiveButton("OK", null) 
       .setView(dlg) 
       .show(); //Builder method returns allow for method chaining 
     } 
    } 
} 
+0

¿Qué es 'alertmono' y/o' R.layout'? – DSlomer64

+0

R.layout es la forma en que Android hace referencia a los diseños compilados, alertmono era el nombre del archivo de diseño de diálogo guardado. –

Cuestiones relacionadas